Java 如果不存在则创建文件
Java create file if does not exist
在我的函数中,我想读取一个文本文件。如果文件不存在,它将被创建。我想使用相对路径,所以如果我有 .jar,文件将在完全相同的目录中创建。我试过了this。这是我的函数,变量 fName
设置为 test.txt
private static String readFile(String fName) {
String noDiacText;
StringBuilder sb = new StringBuilder();
try {
File f = new File(fName, "UTF8");
if(!f.exists()){
f.getParentFile().mkdirs();
f.createNewFile();
}
FileReader reader = new FileReader(fName);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(fName), "UTF8"));
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
我在 f.createNewFile();
收到一个错误,它说
java.io.IOException: System cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1012)
at main.zadanie3.readFile(zadanie3.java:92)
问题在于
File f = new File(fName, "UTF8");
没有将文件编码设置为UTF8。相反,第二个参数是子路径,与编码无关;第一个是父路径。
所以你想要的实际上是:
File f = new File("C:\Parent", "testfile.txt");
或者只是:
File f = new File(fullFilePathName);
没有第二个参数
使用 mkdirs() --plural-- 创建路径的所有缺失部分。
File f = new File("/many/parts/path");
f.mkdirs();
请注意,'mkdir()' --singular-- 如果可能,只会创建路径的列表部分。
在我的函数中,我想读取一个文本文件。如果文件不存在,它将被创建。我想使用相对路径,所以如果我有 .jar,文件将在完全相同的目录中创建。我试过了this。这是我的函数,变量 fName
设置为 test.txt
private static String readFile(String fName) {
String noDiacText;
StringBuilder sb = new StringBuilder();
try {
File f = new File(fName, "UTF8");
if(!f.exists()){
f.getParentFile().mkdirs();
f.createNewFile();
}
FileReader reader = new FileReader(fName);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(fName), "UTF8"));
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
我在 f.createNewFile();
收到一个错误,它说
java.io.IOException: System cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1012)
at main.zadanie3.readFile(zadanie3.java:92)
问题在于
File f = new File(fName, "UTF8");
没有将文件编码设置为UTF8。相反,第二个参数是子路径,与编码无关;第一个是父路径。
所以你想要的实际上是:
File f = new File("C:\Parent", "testfile.txt");
或者只是:
File f = new File(fullFilePathName);
没有第二个参数
使用 mkdirs() --plural-- 创建路径的所有缺失部分。
File f = new File("/many/parts/path");
f.mkdirs();
请注意,'mkdir()' --singular-- 如果可能,只会创建路径的列表部分。