用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 = "文件内容:\n1,The First line;\n2,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 = "文件内容:\n1,The first line;\n2,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:\Users\Admin\Desktop\CAI\20160720\temp1.txt成功!
写文件C:\Users\Admin\Desktop\CAI\20160720\temp2.txt成功!
写文件C:\Users\Admin\Desktop\CAI\20160720\temp3.txt成功!

分析:1.用writeFileByBytes方法以字节为单位写数据到文件。使用了字节输出流FileOutputStream类,通过write方法可以一次写入一个字节,也可以写入一个字节数组

   2.writeFileByChars方法以字符为单位写数据到文件。使用了字符输出流OutputStreamWriter类,将FileOutStream对象封装成OutputStream对象,再调用write方法将字符数据写入到文件中,通过write方法可以一次写入一个字符、一个字符数组或者一个字符串。

  3.writeFileByLines方法以字符串为单位写数据到文件。使用了PrintWriter类,将FileOutputWriter对象封装成PrintWriter对象,再调用print或者println方法将字符串写入到文件,其中println在写入字符串后进行换行,其用法与System.out进行标准输出相似。