0x01 目录结构

  1. # 目录结构
  2. ├── FileWriteTest
  3. ├── BufferedOutputStreamTestWriteDemo.java
  4. ├── BufferedWriterTestWriteDemo.java
  5. ├── FileOutputStreamTestWriteDemo.java
  6. ├── FilesTestWriteDemo.java
  7. ├── FileWriterTestWriteDemo.java
  8. ├── PrintWriterTestWriteDemo.java
  9. ├── RandomAccessFileTestWriteDemo.java

0x02 相关例子

0x02.1 BufferedOutputStream

  1. // 文件名: BufferedOutputStreamTestWriteDemo.java
  2. package FileWriteTest;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileOutputStream;
  5. public class BufferedOutputStreamTestWriteDemo {
  6. public static void main(String[] args) {
  7. try {
  8. BufferedOutputStream bos = new BufferedOutputStream(
  9. new FileOutputStream("bos.txt"));
  10. bos.write("hello world".getBytes());
  11. bos.flush();
  12. bos.close();
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }
  18. // 执行结果
  19. // 根目录创建了一个: bos.txt
  20. // 内容为: hello world

0x02.2 BufferedWriter

  1. // 文件名: BufferedWriterTestWriteDemo.java
  2. // BufferedWriter 必须基于 FileWriter 类来完成调用
  3. package FileWriteTest;
  4. import java.io.FileWriter;
  5. import java.io.BufferedWriter;
  6. public class BufferedWriterTestWriteDemo {
  7. public static void main(String[] args) {
  8. try {
  9. // 创建一个字符缓冲输出流对象
  10. BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt")) ;
  11. // 写数据
  12. bw.write("hello ");
  13. bw.write("world");
  14. // 刷新流
  15. bw.flush();
  16. // 关闭资源
  17. bw.close();
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. }
  23. // 执行结果
  24. // 根目录创建了一个: bw.txt
  25. // 内容为: hello world

0x02.3 FileOutputStream

  1. // 文件名: FileOutputStreamTestWriteDemo.java
  2. package FileWriteTest;
  3. import java.io.FileOutputStream;
  4. public class FileOutputStreamTestWriteDemo {
  5. public static void main(String[] args) {
  6. try {
  7. FileOutputStream fos = new FileOutputStream("fos.txt");
  8. byte[] bytes = "hello world".getBytes();
  9. fos.write(bytes);
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. }
  14. }
  15. // 执行结果
  16. // 根目录创建了一个: fos.txt
  17. // 内容为: hello world

0x02.4 Files

  1. // 文件名: FilesTestWriteDemo.java
  2. // JDK 7以上可用
  3. package FileWriteTest;
  4. import java.nio.file.Files;
  5. import java.nio.file.Paths;
  6. import java.nio.charset.StandardCharsets;
  7. import java.nio.file.StandardOpenOption;
  8. public class FilesTestWriteDemo {
  9. public static void main(String[] args) {
  10. try {
  11. // 普通写模式
  12. Files.write(
  13. Paths.get("f.txt"),
  14. "hello ".getBytes(StandardCharsets.UTF_8));
  15. // 追加写模式
  16. Files.write(
  17. Paths.get("f.txt"),
  18. "world".getBytes(StandardCharsets.UTF_8),
  19. StandardOpenOption.APPEND);
  20. System.out.println("文件创建成功");
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }
  26. // 执行结果
  27. // 根目录创建了一个: f.txt
  28. // 内容为: hello world

0x02.5 FileWriter

  1. // 文件名: FileWriterTestWriteDemo.java
  2. package FileWriteTest;
  3. public class FileWriterTestWriteDemo {
  4. public static void main(String[] args) {
  5. try {
  6. java.io.FileWriter f = new java.io.FileWriter("fw.txt");
  7. // 普通写模式
  8. f.write("abcd");
  9. // 字符串截取写入
  10. // 的部分注意第一个数字是从哪开始截取,第二个数字是截取的长度(不是结束位置)
  11. f.write("qwertyuiopasdfghjklzxcvbnm", 3, 9);
  12. // 关闭写入流,同时会把缓冲区内容写入文件
  13. f.close();
  14. } catch (java.io.IOException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }
  19. // 执行结果
  20. // 根目录创建了一个: fw.txt
  21. // 内容为: abcdrtyuiopas

0x02.6 PrintWriter

  1. // 文件名: PrintWriterTestWriteDemo.java
  2. // PrintWriter 必须基于 FileWriter 类来完成调用
  3. package FileWriteTest;
  4. import java.io.FileWriter;
  5. import java.io.PrintWriter;
  6. public class PrintWriterTestWriteDemo {
  7. public static void main(String[] args) {
  8. try {
  9. PrintWriter prw = new PrintWriter(new FileWriter("prw.txt"));
  10. prw.print("hello world");
  11. prw.flush();
  12. prw.close();
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }
  18. // 执行结果
  19. // 根目录创建了一个: prw.txt
  20. // 内容为: hello world

0x02.7 RandomAccessFile

  1. // 文件名: RandomAccessFileTestWriteDemo.java
  2. package FileWriteTest;
  3. import java.io.File;
  4. import java.io.RandomAccessFile;
  5. public class RandomAccessFileTestWriteDemo {
  6. public static void main(String[] args) {
  7. try {
  8. File f = new File("raf.txt");
  9. String c = "hello world";
  10. // 创建RandomAccessFile对象
  11. // 共有:
  12. // r(只读)、rw(读写)、rws(读写内容同步)、rwd(读写内容或元数据同步) 模式打开文件
  13. RandomAccessFile raf = new RandomAccessFile(f, "rw");
  14. // 写入内容二进制到文件
  15. raf.write(c.getBytes());
  16. raf.close();
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }
  22. // 执行结果
  23. // 根目录创建了一个: rw.txt
  24. // 内容为: hello world