Java create file如果不存在

时间:2015-11-07 11:09:29

标签: java file ioexception

在我的功能中,我想阅读一个文本文件。如果文件不存在,则会创建它。我想使用相对路径,所以如果我有.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)

2 个答案:

答案 0 :(得分:3)

问题在于

var Converter = require('csvtojson').Converter;
var converter = Promise.promisifyAll(Converter.prototype);

不将文件编码设置为UTF8。相反,第二个参数是子路径,它与编码无关;第一个是父路径。

所以你想要的实际上是:

File f = new File(fName, "UTF8");

或只是:

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

没有第二个参数

答案 1 :(得分:0)

使用mkdirs() - popral--创建路径中所有缺失的部分。

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

请注意,'mkdir()' - therular--仅在可能的情况下创建路径的列表部分。