1 //:ThinkingInJava/net.mindview.io/write2File.java 2 package net.mindview.io; 3 4 import java.io.BufferedReader; 5 import java.io.BufferedWriter; 6 import java.io.FileNotFoundException; 7 import java.io.FileReader; 8 import java.io.FileWriter; 9 import java.io.IOException; 10 import java.io.PrintWriter; 11 import java.io.RandomAccessFile; 12 import java.io.StringReader; 13 import java.util.LinkedList; 14 15 /** 16 * 17 * @Time 2014-6-10 18 * @Descri write2File.java 文件写操作细究 19 * 1> 在文件尾部添加新的内容 20 * 2> 改变文件指定行的内容 21 * 3> 改变文件指定位置处的内容 22 * 4> 比较不同方式的文件操作 23 * @author wgm 24 */ 25 public class write2File { 26 /** 27 * PrintWriter:此方式若下一次再打开文件流,欲向其中写入新的内容,则原先内容将被覆盖 28 * @throws IOException 29 */ 30 public static void BasicFileOut() throws IOException{ 31 BufferedReader br=new BufferedReader(new FileReader("day1")); 32 PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter("day2"))); 33 int linCount=1; 34 String s; 35 while((s=br.readLine())!=null){ 36 out.println(linCount++ +":"+s); 37 } 38 out.close(); 39 40 } 41 /** 42 * 实现在文件尾追加新的内容 43 * @throws IOException 44 */ 45 public static void RandFileOut() throws IOException{ 46 RandomAccessFile rand=new RandomAccessFile("day2", "rw"); 47 rand.seek(rand.length()-1); 48 String line="12: wgm"; 49 //writeUTF方法在写字符串之前会先写两个字节,表示实际的字节数 50 rand.writeUTF(line); 51 //验证追加的内容 52 rand.seek(rand.getFilePointer()-9); 53 System.out.println(rand.readUTF()); 54 //改变文件指定行的内容,回到文件首部,读取一行,改变该行内容 55 rand.seek(0); 56 line=rand.readLine(); 57 line="This line has been changed!!!"; 58 rand.seek(0); 59 rand.writeUTF(line+"\n"); 60 rand.close(); 61 62 } 63 64 } 65 66 ///:~