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

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

    }
}

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

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

最佳答案

令人惊讶的是,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 以及一个表示打开以进行追加的 boolean 参数。

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

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

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

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

更新

您评论过:

I tried File dir = new File("C:/dir1").mkdir(); it says incompatible types.

没错。 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
        }
    

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

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

关于java - 创建文件的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21020424/

相关文章:

java - 字符串 "Slot-Extraction"

java - 扫描仪出现问题,无法读取 TSP 文件

c - OP 之间的文件或列表的实现是否有任何差异,因为我的代码在 Windows 上工作但在 Linux(Mac OS X) 上不工作

c++ - 为什么它会进入无限循环?

perl - 我应该保持文件打开还是应该经常打开和关闭?

C# IO Reading and Writing file in use 错误

c# - 使用文件流从根目录文件夹读取文件

java - 使用 Java For-Each 循环迭代具有私有(private)访问权限的 ArrayList?

java - 如何使用 JUnit 5 模拟 Spring 依赖关系?

c++ - 为什么 CreateFile 无法通过网络共享打开文件?