Java创建新文件的完整指南:多种方法与实例解析
在Java中创建文件是一种非常常见的IO操作。今天我们将探讨不同的创建文件方法。
用Java创建文件
有三种流行的方法可以在Java中创建文件。让我们逐一来看看它们。
-
- File.createNewFile()可以用于在Java中创建一个新的文件。当我们初始化File对象时,我们提供文件名,然后我们可以调用createNewFile()方法来在Java中创建新文件。如果新文件被创建,则File createNewFile()方法返回true,如果文件已经存在则返回false。当无法创建文件时,此方法还会抛出java.io.IOException异常。创建的文件是空的且为零字节。当我们通过传递文件名创建File对象时,可以使用绝对路径,也可以只提供文件名,或者提供相对路径。对于非绝对路径,File对象尝试在项目根目录中定位文件。如果我们从命令行运行程序,并且对于非绝对路径,File对象会尝试从当前目录中定位文件。在创建文件路径时,我们应该使用System属性file.separator使我们的程序在各个平台上都是独立的。让我们用一个简单的java程序来看不同的场景来创建一个新文件。
以下是用Eclipse IDE第一次执行以上程序时产生的输出。
/Users/scdev/file.txt 文件已创建
文件file.txt已在项目根目录中创建
在主线程中的异常java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:947)
at com.Olivia.files.CreateNewFile.main(CreateNewFile.java:32)
对于相对路径,它抛出IOException,因为tmp目录不在项目根文件夹中。因此,很明显,createNewFile()只是尝试创建文件,而任何目录,无论是绝对还是相对,都应该已经存在,否则它会抛出IOException。因此,我在项目根目录中创建了“tmp”目录,并再次执行了该程序,以下是输出结果。
文件/Users/scdev/file.txt已存在
文件file.txt已经在项目根目录中存在
tmp/file.txt文件已在项目根目录中创建
第一二个文件已经存在,所以createNewFile()返回false,第三个文件创建在tmp目录中并返回true。任何后续的执行仍会产生以下输出:
文件/Users/scdev/file.txt已存在
文件file.txt已经在项目根目录中存在
tmp/file.txt文件已在项目根目录中存在
如果你从终端类目录运行相同的程序,以下是输出结果。
//从类输出目录中执行第一次
scdev:~/CODE/JavaFiles/bin$ java com/scdev/files/CreateNewFile
文件/Users/scdev/file.txt已存在
文件file.txt已在项目根目录中创建
在主线程中的异常java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:947)
at com.Olivia.files.CreateNewFile.main(CreateNewFile.java:32)
//tmp目录不存在,让我们创建它
scdev:~/CODE/JavaFiles/bin$ mkdir tmp
//第二次执行
scdev:~/CODE/JavaFiles/bin$ java com/scdev/files/CreateNewFile
文件/Users/scdev/file.txt已存在
文件file.txt已在项目根目录中存在
tmp/file.txt文件已在项目根目录中创建
//第三次和后续执行
scdev:~/CODE/JavaFiles/bin$ java com/scdev/files/CreateNewFile
文件/Users/scdev/file.txt已存在
文件file.txt已经在项目根目录中存在
tmp/file.txt文件已经在项目根目录中存在
FileOutputStream.write(byte[] b)
如果你想同时创建一个新文件并往其中写入一些数据,可以使用FileOutputStream的write方法。下面是一个简单的代码片段来展示其用法。上述绝对路径和相对路径的规则在这种情况下同样适用。
String fileData = “Pankaj Kumar”;
FileOutputStream fos = new FileOutputStream(“name.txt”);
fos.write(fileData.getBytes());
fos.flush();
fos.close();
Java NIO Files.write()
我们可以使用Java NIO Files类来创建一个新文件并将一些数据写入其中。这是一个很好的选择,因为我们不必担心关闭IO资源。
String fileData = “Pankaj Kumar”;
Files.write(Paths.get(“name.txt”), fileData.getBytes())。
这就是在Java程序中创建新文件的全部内容。
你可以在我们的GitHub存储库中查看更多的核心Java示例。