【问题标题】:What is the simplest way to create a file?创建文件的最简单方法是什么?
【发布时间】:2014-01-28 00:22:50
【问题描述】:

这似乎没有创建文件或文件夹。为什么?

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){}

    }
}

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

我可以做些什么来创建一个目录。 其他创建文件和文件夹的简单方法是什么。

【问题讨论】:

    标签: java file file-io directory


    【解决方案1】:

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

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

    【讨论】:

    • 我尝试了 File dir = new File("C:/dir1").mkdir();但出现错误。发现布尔值但预期为 java.io.File
    • 试试我写的那一行,没有 File dir = part。
    • 非常感谢。我做了 new File("C:/dir2").mkdirs();它创建了目录 dir2。为什么 File dir2 = new File("C:/dir2").mkdirs();不工作?
    【解决方案2】:

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

    要在 Java 中创建文件,您需要将其打开以进行输出;例如

        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"); 
        }
    

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


    您需要了解的更多信息:

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

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

      os 将在块退出时自动关闭。

    • 捕获Exception 通常是“不好的做法”。捕获Exception 并且在处理程序中什么都不做是总是“不好的做法”。这种隐藏了错误的证据,使您的代码不可预测且难以调试。

    【讨论】:

    • 谢谢。我试过 File dir = new File("C:/dir1").mkdir();它说不兼容的类型。找到布尔值,但应为 java.io.File。
    • catch(IOException e){System.out.print("bug");} 好吗?
    • 更好。更好的是catch(IOException e){System.out.print("unexpected exception: " + e);}
    • 好的。谢谢。但我仍然无法创建目录。
    • 啊。谢谢。我也试过: File dir = new File("C:/dir1"); dir.mkdir();这也奏效了。
    【解决方案3】:

    对于创建目录,您可以使用:

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

    并用于创建文件:

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

    【讨论】:

    • 谢谢。 text1.exists 在哪里?如何在 C:/ 中创建它?
    • 这里 text1 是您的代码中的变量 ` File text1 = new File("C:/text1.txt");. exists()` 是文件方法,请参阅文档。
    • 这样理解有点麻烦。如果可以,请提供 try 块内的完整代码 - 2 行、4 行,无论需要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多