我们可以使用多种方式在 Java 中写入文件。以下是在 Java 中创建文件的三种最流行的方法
使用 FileOutputStream() 构造函数
使用 FileWriter.write() 方法
使用 Files.write() 方法
让我们看一下每个Java中写入文件的方式。
FileOutputStream
FileOutputStream用于创建文件并向其中写入数据。如果文件尚不存在,则流将创建一个文件,然后再打开它进行输出。
这里有两个构造函数,可用于创建 FileOutputStream 对象。
以下构造函数采用文件名作为字符串来创建输入流对象来写入文件 -
OutputStream f = new FileOutputStream("C:/java/hello.txt")
以下构造函数采用文件对象来创建输出流对象来写入文件。首先,我们使用 File() 方法创建一个文件对象,然后将字节写入流,如下所示 -
File f = new File("C:/java/hello.txt");
OutputStream f = new FileOutputStream(f);
for(int x = 0; x < bWrite.length ; x++) {
os.write( bWrite[x] ); //写入字节
}
示例
以下示例演示 FileOutputStream 写入当前目录中的文件 -
package com.yxjc123;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileTest {
public static void main(String args[]) {
try {
byte bWrite [] = {65, 66, 67, 68, 69};
OutputStream os = new FileOutputStream("test.txt");
for(int x = 0; x < bWrite.length ; x++) {
os.write( bWrite[x] ); //写入字节
}
os.close();
InputStream is = new FileInputStream("test.txt");
int size = is.available();
for(int i = 0; i < size; i++) {
System.out.print((char)is.read() + " ");
}
is.close();
} catch (IOException e) {
System.out.print("Exception");
}
}
}
上面的代码将创建文件 test.txt 并以二进制格式写入给定的数字。 stdout 屏幕上的输出也是如此。
输出
A B C D E
FileWriter.write() 方法
FileWriter.write() 方法允许将字符写入如下所示的文件 -
//获取现有文件
File file = new File("d://test//testFile1.txt");
//写入内容
FileWriter writer = new FileWriter(file);
writer.write("Test data");
writer.close();
示例
以下示例演示 File 使用 FileWriter.write() 方法写入给定目录中的文件 -
package com.yxjc123;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTest {
public static void main(String args[]) {
try {
File file = new File("d://测试//testFile1.txt");
//创建文件
if (file.createNewFile()) {
System.out.println("File is created!");
} else {
System.out.println("File already exists.");
}
//写入内容
FileWriter writer = new FileWriter(file);
writer.write("Test data");
writer.close();
//读取内容
FileReader reader = new FileReader(file);
int c;
while ((c = reader.read()) != -1) {
char ch = (char) c;
System.out.print(ch);
}
} catch (IOException e) {
System.out.print("Exception");
}
}
}
上面的代码将创建文件 test.txt 并以文本格式写入给定的字符串。 stdout 屏幕上的输出也是如此。
Output
File is created!
Test data
Files.write() 方法
Files.write() 是一种更新且更灵活的方法方法创建一个文件并使用相同的命令将内容写入文件,如下所示 -
String data = "Test data";
Files.write(Paths.get("d://test/testFile3.txt"), data.getBytes());
List<String> lines = Arrays.asList("1st line", "2nd line");
Files.write(Paths.get("file6.txt"), lines, StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
示例
以下示例演示 File 使用 Files 在给定目录中创建文件。 write() 方法 -
package com.yxjc123;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;
public class FileTest {
public static void main(String args[]) {
try {
String data = "Test data";
Files.write(Paths.get("d://test/testFile3.txt"), data.getBytes());
List<String> lines = Arrays.asList("1st line", "2nd line");
Files.write(Paths.get(
"file6.txt"), lines, StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
List<String> content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));
System.out.println(content);
content = Files.readAllLines(Paths.get("file6.txt"));
System.out.println(content);
} catch (IOException e) {
System.out.print("Exception");
}
}
}
上面的代码将创建文件 test.txt 并以文本格式写入给定的字符串。 stdout 屏幕上的输出也是如此。
输出
[Test data]
[1st line, 2nd line]