0x01 目录结构
# 目录结构
├── FileWriteTest
│ ├── BufferedOutputStreamTestWriteDemo.java
│ ├── BufferedWriterTestWriteDemo.java
│ ├── FileOutputStreamTestWriteDemo.java
│ ├── FilesTestWriteDemo.java
│ ├── FileWriterTestWriteDemo.java
│ ├── PrintWriterTestWriteDemo.java
│ ├── RandomAccessFileTestWriteDemo.java
0x02 相关例子
0x02.1 BufferedOutputStream
// 文件名: BufferedOutputStreamTestWriteDemo.java
package FileWriteTest;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
public class BufferedOutputStreamTestWriteDemo {
public static void main(String[] args) {
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("bos.txt"));
bos.write("hello world".getBytes());
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: bos.txt
// 内容为: hello world
0x02.2 BufferedWriter
// 文件名: BufferedWriterTestWriteDemo.java
// BufferedWriter 必须基于 FileWriter 类来完成调用
package FileWriteTest;
import java.io.FileWriter;
import java.io.BufferedWriter;
public class BufferedWriterTestWriteDemo {
public static void main(String[] args) {
try {
// 创建一个字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt")) ;
// 写数据
bw.write("hello ");
bw.write("world");
// 刷新流
bw.flush();
// 关闭资源
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: bw.txt
// 内容为: hello world
0x02.3 FileOutputStream
// 文件名: FileOutputStreamTestWriteDemo.java
package FileWriteTest;
import java.io.FileOutputStream;
public class FileOutputStreamTestWriteDemo {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("fos.txt");
byte[] bytes = "hello world".getBytes();
fos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: fos.txt
// 内容为: hello world
0x02.4 Files
// 文件名: FilesTestWriteDemo.java
// JDK 7以上可用
package FileWriteTest;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.nio.file.StandardOpenOption;
public class FilesTestWriteDemo {
public static void main(String[] args) {
try {
// 普通写模式
Files.write(
Paths.get("f.txt"),
"hello ".getBytes(StandardCharsets.UTF_8));
// 追加写模式
Files.write(
Paths.get("f.txt"),
"world".getBytes(StandardCharsets.UTF_8),
StandardOpenOption.APPEND);
System.out.println("文件创建成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: f.txt
// 内容为: hello world
0x02.5 FileWriter
// 文件名: FileWriterTestWriteDemo.java
package FileWriteTest;
public class FileWriterTestWriteDemo {
public static void main(String[] args) {
try {
java.io.FileWriter f = new java.io.FileWriter("fw.txt");
// 普通写模式
f.write("abcd");
// 字符串截取写入
// 的部分注意第一个数字是从哪开始截取,第二个数字是截取的长度(不是结束位置)
f.write("qwertyuiopasdfghjklzxcvbnm", 3, 9);
// 关闭写入流,同时会把缓冲区内容写入文件
f.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: fw.txt
// 内容为: abcdrtyuiopas
�
0x02.6 PrintWriter
// 文件名: PrintWriterTestWriteDemo.java
// PrintWriter 必须基于 FileWriter 类来完成调用
package FileWriteTest;
import java.io.FileWriter;
import java.io.PrintWriter;
public class PrintWriterTestWriteDemo {
public static void main(String[] args) {
try {
PrintWriter prw = new PrintWriter(new FileWriter("prw.txt"));
prw.print("hello world");
prw.flush();
prw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: prw.txt
// 内容为: hello world
�
0x02.7 RandomAccessFile
// 文件名: RandomAccessFileTestWriteDemo.java
package FileWriteTest;
import java.io.File;
import java.io.RandomAccessFile;
public class RandomAccessFileTestWriteDemo {
public static void main(String[] args) {
try {
File f = new File("raf.txt");
String c = "hello world";
// 创建RandomAccessFile对象
// 共有:
// r(只读)、rw(读写)、rws(读写内容同步)、rwd(读写内容或元数据同步) 模式打开文件
RandomAccessFile raf = new RandomAccessFile(f, "rw");
// 写入内容二进制到文件
raf.write(c.getBytes());
raf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 执行结果
// 根目录创建了一个: rw.txt
// 内容为: hello world