0x01 目录结构
# 目录结构├── FileWriteTest│ ├── BufferedOutputStreamTestWriteDemo.java│ ├── BufferedWriterTestWriteDemo.java│ ├── FileOutputStreamTestWriteDemo.java│ ├── FilesTestWriteDemo.java│ ├── FileWriterTestWriteDemo.java│ ├── PrintWriterTestWriteDemo.java│ ├── RandomAccessFileTestWriteDemo.java
0x02 相关例子
0x02.1 BufferedOutputStream
// 文件名: BufferedOutputStreamTestWriteDemo.javapackage 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.javapackage 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.javapackage 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.javapackage 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