无法将文件从我的计算机本地目录加载到java程序

无法将文件从我的计算机本地目录加载到java程序,java,file,sorting,filenotfoundexception,Java,File,Sorting,Filenotfoundexception,我正在尝试编码对字符串进行排序,从文本文件中获取输入。当我尝试为此程序指定文件时,会给出filenotfoundexception 我不明白为什么? 即使我试图通过编写代码来获取文件路径,在屏幕截图中,你可以看到路径是正确的,但程序仍然给了我错误 这是一个简短的例子 这是我的密码 public static void main(String[] args) throws FileNotFoundException, IOException { ArrayList<String>

我正在尝试编码对字符串进行排序,从文本文件中获取输入。当我尝试为此程序指定文件时,会给出filenotfoundexception 我不明白为什么? 即使我试图通过编写代码来获取文件路径,在屏幕截图中,你可以看到路径是正确的,但程序仍然给了我错误

这是一个简短的例子

这是我的密码

public static void main(String[] args) throws FileNotFoundException, IOException {
  ArrayList<String> row1 = new ArrayList<>();
  FileWriter writer;

  try {

     String filename = "1.txt";
     String finalfile = "";
     String workingDir = System.getProperty("user.dir");

     String your_os = System.getProperty("os.name").toLowerCase();
     if (your_os.indexOf("win") >= 0) {
        finalfile = workingDir + "\\" + filename;
     } else if (your_os.indexOf("nix") >= 0 || your_os.indexOf("nux") >= 0) {
        finalfile = workingDir + "/" + filename;
     } else {
        finalfile = workingDir + "{others}" + filename;
     }

     System.out.println("Final filepath : " + finalfile);
     File file = new File(finalfile);

     if (file.createNewFile()) {
        System.out.println("Done");
     } else {
        System.out.println("File already exists!");
     }

  } catch (IOException e) {
     e.printStackTrace();
  }

  try (BufferedReader reader = new BufferedReader(new FileReader("finalfile"))) {
     String s;
     while ((s = reader.readLine()) != null) {
        row1.add(s);
     }
     Collections.sort(row1);
     writer = new FileWriter("output.txt");
     for (String s1 : row1) {
        writer.write(s1 + "\n");
     }
     reader.close();
     writer.close();
  } catch (Exception e) {
     System.out.print("Error : " + e);
  }

}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException、IOException{
ArrayList row1=新的ArrayList();
文件编写器;
试一试{
字符串filename=“1.txt”;
字符串finalfile=“”;
字符串workingDir=System.getProperty(“user.dir”);
将您的_os=System.getProperty(“os.name”).toLowerCase()串起来;
如果(你的指数(“赢”)>=0){
finalfile=workingDir+“\\”+文件名;
}否则如果(您的_os.indexOf(“nix”)>=0 | |您的_os.indexOf(“nux”)>=0){
finalfile=workingDir+“/”+文件名;
}否则{
finalfile=workingDir+“{others}”+文件名;
}
System.out.println(“最终文件路径:+finalfile”);
文件=新文件(最终文件);
if(file.createNewFile()){
系统输出打印项次(“完成”);
}否则{
System.out.println(“文件已经存在!”);
}
}捕获(IOE异常){
e、 printStackTrace();
}
try(BufferedReader=newbufferedreader(newfilereader(“finalfile”)){
字符串s;
而((s=reader.readLine())!=null){
第1行。添加(s);
}
Collections.sort(第1行);
writer=newfilewriter(“output.txt”);
用于(字符串s1:row1){
writer.write(s1+“\n”);
}
reader.close();
writer.close();
}捕获(例外e){
系统输出打印(“错误:+e”);
}
}
中的

FileReader
构造函数的参数硬编码为“finalfile”-您需要使用变量:

BufferedReader reader = new BufferedReader(new FileReader(finalfile))) 
                                                         ^^^^^^^^^^^
您还需要移动
String finalfile=“”块之前进行code>尝试
块,否则在创建
文件读取器时它超出范围

此外,无需查询操作系统和手动设置目录路径分隔符。如果您确实需要,请使用。否则,只需使用正斜杠-

很高兴看到您正在使用
try with resources
——但是,您应该这样做;只需在
try
语句中创建所有所需资源,就无需显式关闭它们:

try (BufferedReader reader = new BufferedReader(new FileReader(finalfile));
     FileWriter writer = new FileWriter("output.txt")) {

   ...

   // reader and writer will be auto-closed
} catch (IOException e) {
   System.out.print("Error : " + e);
}

你在开玩笑吗?您试图打开的是“finalfile”,而不是名称在variable
finalfile
try (BufferedReader reader = new BufferedReader(new FileReader(finalfile));
     FileWriter writer = new FileWriter("output.txt")) {

   ...

   // reader and writer will be auto-closed
} catch (IOException e) {
   System.out.print("Error : " + e);
}