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