Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件路径问题:/->\_Java_String_File_Path - Fatal编程技术网

Java 文件路径问题:/->\

Java 文件路径问题:/->\,java,string,file,path,Java,String,File,Path,这些行采用递归方法。第一次给出正确的路径: // Dividend Limit check or increase the Dividend if (dival == 10) { writer.println("Divident has reached it Limit !"); i++; // update the file name String upath

这些行采用递归方法。第一次给出正确的路径:

            // Dividend Limit check or increase the Dividend
        if (dival == 10) {
            writer.println("Divident has reached it Limit !");
            i++;
            // update the file name
            String upath = "channel_" + i;
            System.out.println(path);
            // find channel_1 and replace with the updated path
            if (path.contains("channel_1")) {
                path = "D:/File Compression/Data/low_freq/low_freq/house_1/"
                        + upath + ".dat";
            } else {
                JOptionPane.showMessageDialog(null, "Invalid File Choosen");
                System.exit(0);
            }

            dival = 10;

        } else {
            dival = dival + 10;
            writer.println("Dividen:" + dival);
        }
但在第二次调用时,它将正斜杠翻转为反斜杠:

D:/File Compression/Data/low_freq/low_freq/house_1/channel_2.dat
如果我不使用这个条件,它可以正常工作

D:\File Compression\Data\low_freq\low_freq\house_1\channel_1.dat

这是因为Windows中的
文件.separator
\
。每次让路径字符串通过
java.io.File
时,它都会替换它们。所以要解决这个问题,要么不要将文件用作辅助工具,要么将反斜杠替换为正斜杠


因此,您的
路径
字符串使用向后斜杠。从
java.io.File
中检索该字符串,该文件将在Windows上自动使用反斜杠。如果路径包含“channel\u 1”,则使用带有正斜杠的硬编码字符串覆盖整个字符串。

这是因为Windows中的
文件.separator
\
。每次让路径字符串通过
java.io.File
时,它都会替换它们。所以要解决这个问题,要么不要将文件用作辅助工具,要么将反斜杠替换为正斜杠


因此,您的
路径
字符串使用向后斜杠。从
java.io.File
中检索该字符串,该文件将在Windows上自动使用反斜杠。如果路径包含“channel\u 1”,则使用硬编码字符串和前斜杠覆盖整个字符串。

\在java中称为转义序列,用于各种用途

在您的情况下,请使用
File.separator

if(path.contains("channel_"))
使用双斜杠\\!这是一种特殊的逃跑模式。像\n或\r.
转义序列通常用于Windows中的文本文件,特别是记事本中

下面列出了主要的Java转义序列。它们用于表示非图形字符以及双引号、单引号和反斜杠等字符。如果要在字符串文字中表示双引号,可以使用\“。如果要在字符文字中表示单引号,可以使用\”


\在java中被称为转义序列,用于各种用途

在您的情况下,请使用
File.separator

if(path.contains("channel_"))
使用双斜杠\\!这是一种特殊的转义模式。如\n或\r.
转义序列通常用于Windows中的文本文件,特别是记事本中

下面列出了主要的Java转义序列。它们用于表示非图形字符,以及双引号、单引号和反斜杠等字符。如果要在字符串文字中表示双引号,可以使用\“。如果要在字符文字中表示单个引号,可以使用\'


除了前面的答案之外。您不应该在应用程序中使用
/
\
硬编码。因为这会损害应用程序的可移植性。而是使用,

String path = "D:"+File.separator+"File Compression"+File.separator+"Data"+File.separator+"low_freq"+File.separator+"low_freq"+File.separator+"house_1"+File.separator;

根据系统中的不同,为您提供分隔符。

除了前面的答案之外。您不应该在应用程序中使用
/
\
硬编码。因为这会损害应用程序的可移植性。而是使用,

String path = "D:"+File.separator+"File Compression"+File.separator+"Data"+File.separator+"low_freq"+File.separator+"low_freq"+File.separator+"house_1"+File.separator;

根据您的系统提供分隔符。

您知道这个问题的解决方案吗?代码没有显示如何或在何处通过java.io.File,Thoh。我知道。但据我所知,对于这种行为没有其他解释,所以我猜代码中缺少了一部分。file@MartijnCourteaux实际上,我这样做是因为我在不同的文件夹中有文件,所以我得到了路径,并将“channel_1”替换为“channel_”+如果我硬编码它,我将无法实现我的目标。你知道这个问题的解决方案吗?代码没有显示它如何或在哪里通过java.io.File,Thoh。我知道。但据我所知,对于这种行为没有其他解释,所以我猜代码中缺少了一部分。file@MartijnCourteaux实际上,我这样做是因为我在不同的文件夹中有文件,所以我得到了路径,并将“channel_1”替换为“channel_”+如果我硬编码,我将无法实现我的目标。您发布的代码不会显示此问题。“路径”从何而来?注意:Java文件名中永远不需要使用反斜杠。@EJP路径来自字符串path是静态的,它在另一个类中,所以我从类名调用它,并在这里使用该路径。下面是代码
public void actionPerformed(ActionEvent arg0){JFileChooser chooser=new JFileChooser();filename extensionfilter=new filename extensionfilter(“数据文件”,“数据”);chooser.setFileFilter(过滤器);int returnVal=chooser.showOpenDialog(getParent());if(returnVal==JFileChooser.APPROVE\u选项){path=chooser.getSelectedFile().getAbsolutePath();}
您发布的代码没有显示此问题。“路径”来自何处?注意,Java文件名中不需要使用反斜杠。@EJP路径来自字符串,路径是静态的,它位于其他类中,因此我从类名调用它,并在此处使用该路径。下面是执行的代码
public void action(ActionEvent arg0){JFileChooser chooser=new JFileChooser();FileNameExtensionFilter=new FileNameExtensionFilter(“数据文件”、“数据”);chooser.setFileFilter(过滤器);int returnVal=chooser.showOpenDialog(getParent());if(returnVal==JFileChooser.APPROVE_选项){path=chooser.getSelectedFile().getAbsolutePath();}}