Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Ioexception - Fatal编程技术网

Java创建文件(如果不存在)

Java创建文件(如果不存在),java,file,ioexception,Java,File,Ioexception,在我的函数中,我想读取一个文本文件。如果文件不存在,将创建该文件。我想使用相对路径,所以如果我有.jar,文件将在完全相同的目录中创建。我试过了。这是我的函数,变量fName设置为test.txt private static String readFile(String fName) { String noDiacText; StringBuilder sb = new StringBuilder(); try { File f = new Fi

在我的函数中,我想读取一个文本文件。如果文件不存在,将创建该文件。我想使用相对路径,所以如果我有.jar,文件将在完全相同的目录中创建。我试过了。这是我的函数,变量
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);
如果没有第二个参数,问题是

File f = new File(fName, "UTF8");
不将文件编码设置为UTF8。相反,第二个参数是子路径,它与编码无关;第一个是父路径

所以你想要的实际上是:

File f = new File("C:\\Parent", "testfile.txt");
或者只是:

File f = new File(fullFilePathName);
如果没有第二个参数

请使用mkdirs()--复数形式--创建路径的所有缺失部分

File f = new File("/many/parts/path");
f.mkdirs();
请注意,“mkdir()”--单数--如果可能,只创建路径的列表部分。

使用mkdirs()--复数--创建路径的所有缺失部分

File f = new File("/many/parts/path");
f.mkdirs();

请注意,如果可能,“mkdir()”--单数--只创建路径的列表部分。

添加println或其他内容,并调试路径的外观。你也可以说函数的哪一行是抛出异常的。如果你使用java 7 +,你应该考虑使用java. No.FraseRealTrand为什么?空文件对你有什么好处?还有一个空字符串?只需捕获
FileNotFoundException,
或者更好地让它被抛出。添加一个println或其他东西并调试路径。你也可以说函数的哪一行是抛出异常的。如果你使用java 7 +,你应该考虑使用java. No.FraseRealTrand为什么?空文件对你有什么好处?还有一个空字符串?只需捕获
FileNotFoundException,
或者更好地让它被抛出。