创建文件的最简单方法是什么?

时间:2014-01-09 12:34:35

标签: java file file-io directory

这似乎不会创建文件或文件夹。为什么呢?

import java.io.*;
public class file1
{
  public static void main(String[] args)
  {

    File text1 = new File("C:/text1.txt");
    File dir1 = new File("C:/dir");
}

下面这个会创建一个文件。

import java.io.*;
public class file3
{
  public static void main(String[] args)
  {
    try
    {
    FileWriter text1 = new FileWriter("C:/text.txt");
     FileWriter dir = new FileWriter("C:/dir");
}
catch(Exception e){}

    }
}

但是,该目录似乎有一个奇怪的无法使用的图标。

如何创建目录。 什么是其他简单的方法来创建文件和文件夹。

3 个答案:

答案 0 :(得分:2)

令人惊讶的是,File类并不代表文件。它实际上代表了一个文件的路径名......可能存在也可能不存在。

要在Java中创建文件,您需要打开它以进行输出; e.g。

    File text1 = new File("C:/text1.txt");
    FileOutputStream os = new FileOutputStream(text1);  // The file is created 
                                                        // here ... if it doesn't 
                                                        // exist already.
    // then write to the file and close it.

或者你可以这样做 - new FileOutputStream("C:/text1.txt")。在这两种情况下,现有文件都将被截断...除非您使用带有布尔参数的FileOutputStream打开以进行追加。

如果您想创建一个文件而不向其写入任何数据,您也可以这样做:

    File text1 = new File("C:/text1.txt");
    text1.createNewFile();

但是,如果文件尚不存在,那只会创建一个新文件。

要使用Java创建目录,请使用File.mkdir()File.mkdirs()方法。

<强>更新

您评论道:

  

我试过File dir = new File("C:/dir1").mkdir();它说不兼容的类型。

这是对的。 mkdir()方法返回boolean以表示它是否创建了目录。你需要写的是这样的:

    File dir = new File("C:/dir1");
    if (dir.mkdir()) {
        System.out.println("I created it"); 
    }

在使用您不熟悉的方法或类之前,请务必阅读JAVADOC!


您需要了解的更多内容:

  • 解决确保文件关闭问题的最佳方法是执行以下操作:

        try (FileOutputStream os = new FileOutputStream(text1)) {
            // now write to it
        }
    

    当块退出时,流os将自动关闭。

  • 抓住Exception通常是“不好的做法”。捕获Exception并在处理程序中不执行任何操作总是“不良做法”。这种隐藏了错误的证据,使您的代码难以预测,难以调试。

答案 1 :(得分:0)

如果您要使用File创建目录,则需要:

new File("C:/dir").mkdirs();

答案 2 :(得分:0)

要创建目录,您可以使用:

if(!text1.exists()){
     text1.mkdir();
}

并用于创建文件使用:

if(!text1.exists()){
    try {
        text1.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
}