用Java程序写文件有多种方式,对于不同类型的数据,有不同的写方法。写文件的关键技术点如下:
1.FileOutputStream打开文件输出流,通过write方法以字节为单位写文件,是写文件最通用的方法,能写任何类型的文件,特别适合写二进制数据文件。
2.OutputStreamWriter打开文件输出流,通过write方法以字符为单位写文件,能够将字符数组和字符串写入文件。
3.PrintWriter打开文件输出流,通过print和println方法将字符串写入文件,与System.out的用法相似,常用于写格式化文本。
通过以上各种文件输出流将数据写入文件后,需要调用close方法关闭文件输出流。
实例如下:
1 package book.io; 2 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.OutputStream; 8 import java.io.OutputStreamWriter; 9 import java.io.PrintWriter; 10 import java.io.Writer; 11 12 public class WriteToFile { 13 //以字节为单位写文件,适合于写二进制文件,如图片等 14 public static void writeFileByBytes(String fileName){ 15 File file = new File(fileName); 16 OutputStream out = null; 17 try { 18 out = new FileOutputStream(file); 19 String content = "文件内容: 1,The First line; 2,The Second line"; 20 byte[] bytes = content.getBytes();//读取文件输出流中的字节 21 //写入文件 22 out.write(bytes); 23 System.out.println("写文件" + file.getAbsolutePath() + "成功!"); 24 } catch (IOException e) { 25 System.out.println("写文件" + file.getAbsolutePath() + "失败!"); 26 e.printStackTrace(); 27 }finally{ 28 if(out != null){ 29 try { 30 out.close(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 } 35 } 36 } 37 //以字符为单位写文件 38 public static void writeFileByChars(String fileName){ 39 File file = new File(fileName); 40 Writer writer = null; 41 try { 42 writer = new OutputStreamWriter(new FileOutputStream(file)); 43 String content = "文件内容: 1,The first line; 2,The second line"; 44 writer.write(content); 45 System.out.println("写文件" + file.getAbsolutePath() + "成功!"); 46 } catch (IOException e) { 47 System.out.println("写文件" + file.getAbsolutePath() + "失败!"); 48 e.printStackTrace(); 49 }finally{ 50 if(writer != null){ 51 try { 52 writer.close(); 53 } catch (IOException e) { 54 e.printStackTrace(); 55 } 56 } 57 } 58 } 59 //以行为单位写文件 60 public static void writeFileByLines(String fileName){ 61 File file = new File(fileName); 62 PrintWriter writer = null; 63 try { 64 writer = new PrintWriter(new FileOutputStream(file)); 65 writer.println("文件内容:"); 66 //写入各种基本类型数据 67 writer.println(true); 68 writer.print(155); 69 writer.println(); 70 writer.flush(); 71 System.out.println("写文件" + file.getAbsolutePath() + "成功!"); 72 } catch (FileNotFoundException e) { 73 System.out.println("写文件" + file.getAbsolutePath() + "失败!"); 74 e.printStackTrace(); 75 }finally{ 76 if(writer != null){ 77 writer.close(); 78 } 79 } 80 } 81 public static void main(String[] args){ 82 String fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp1.txt"; 83 WriteToFile.writeFileByBytes(fileName); 84 fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp2.txt"; 85 WriteToFile.writeFileByChars(fileName); 86 fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp3.txt"; 87 WriteToFile.writeFileByLines(fileName); 88 } 89 }
结果:
写文件C:UsersAdminDesktopCAI20160720 emp1.txt成功!
写文件C:UsersAdminDesktopCAI20160720 emp2.txt成功!
写文件C:UsersAdminDesktopCAI20160720 emp3.txt成功!
分析:1.用writeFileByBytes方法以字节为单位写数据到文件。使用了字节输出流FileOutputStream类,通过write方法可以一次写入一个字节,也可以写入一个字节数组
2.writeFileByChars方法以字符为单位写数据到文件。使用了字符输出流OutputStreamWriter类,将FileOutStream对象封装成OutputStream对象,再调用write方法将字符数据写入到文件中,通过write方法可以一次写入一个字符、一个字符数组或者一个字符串。
3.writeFileByLines方法以字符串为单位写数据到文件。使用了PrintWriter类,将FileOutputWriter对象封装成PrintWriter对象,再调用print或者println方法将字符串写入到文件,其中println在写入字符串后进行换行,其用法与System.out进行标准输出相似。