无法写入文件,使用File类在java中创建

时间:2016-08-18 14:29:33

标签: java file-handling

MakeDirectory包含构造函数,在构造函数中我创建了一个目录,在该目录中我创建了一个文件。但即使文件和目录已成功生成,我也无法向新创建的文件写入任何内容。任何人都可以帮我弄清楚为什么我无法写入文件Anything.txt?

public class MakeDirectory {
    MakeDirectory() throws IOException{
        // Creates Directory
        File mydir= new File("MyDir");
        mydir.mkdir();

        // Creates new file object
        File myfile = new File("MyDir","Anyfile.txt");

        //Create actual file Anyfile.txt inside the directory
        PrintWriter pr= new PrintWriter(myfile);
        pr.write("This file is created through java");
    }

    public static void main(String args[]) throws IOException {
        new MakeDirectory();
    }
}

2 个答案:

答案 0 :(得分:2)

使用BufferedWriter,您可以直接将字符串,数组或字符数据写入文件:

void makeDirectory() throws IOException {
    // Creates Directory
    File mydir = new File("MyDir");
    mydir.mkdir();

    // Creates new file object
    File myfile = new File("MyDir", "Anyfile.txt");

    //Create actual file Anyfile.txt inside the directory
    BufferedWriter bw = new BufferedWriter(new FileWriter(myfile.getAbsoluteFile()));
    String str = "This file is created through java";

    bw.write(str);
    bw.close(); 
}

答案 1 :(得分:2)

如果您想使用PrintWriter,您需要知道它不会自动刷新。在write之后,您需要flush。另外,不要忘记关闭PrintWriter

PrintWriter pw = new PrintWriter(myFile);
pw.write("text");
pw.flush();
pw.close();

Java 7中可用的方法采用try-with-resources构造。使用此功能,代码如下所示:

try (PrintWriter pw = new PrintWriter("myFile")) {
    pw.write("text");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}