Java读写文件方法总结
Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用 Java的读写文件方法来处理数据方面的输入输出,确实很方便。奈何我的记性实在是叫人着急,很多时候既然都会想不起来怎么写了,不过我的Java代码量 也实在是少的可怜,所以应该多多练习。这里做一个总结,集中在一起方面今后查看。
Java读文件
1 package 天才白痴梦;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.FileReader;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.InputStreamReader;
10 import java.io.RandomAccessFile;
11 import java.io.Reader;
12
13 public class JavaIO {
14
15 /**
16 * 采用的是操作系统底层默认的编码方式,GBK等,非UTF8
17 * */
18
19 /**
20 * 以字节为单位读取文件内容,常用于读取二进制文件,比如图片、影像、声音等文件
21 * */
22 public static void readFileByBytes(String filename) {
23 File file=new File(filename);
24 FileInputStream in=null;
25 try {
26 System.out.println("以字节为单位读取文件,一次读一个字节: ");
27 in=new FileInputStream(file);
28 int temp=0;
29 while ((temp=in.read()) != -1) {
30 System.out.println(temp);
31 }
32 in.close();
33 } catch (IOException e) {
34 e.printStackTrace();
35 return ;
36 }
37 try {
38 System.out.println("以字节为单位读取文件,一次读多个字节: ");
39 byte[] temp=new byte[100];
40 int byteread=0;
41 in=new FileInputStream(file);
42 JavaIO.showAvailableBytes(in);
43 while ((byteread=in.read(temp)) != -1) {
44 System.out.write(temp,0,byteread);
45 }
46 } catch (Exception e1) {
47 e1.printStackTrace();
48 } finally {
49 if (in != null) {
50 try {
51 in.close();
52 } catch (IOException e1) {
53
54 }
55 }
56 }
57 }
58 /**
59 * 以字符为单位读取文件,常用于读文本,数字等类型的文件
60 * */
61 public static void readFileByChar(String filename) {
62 File file=new File(filename);
63 Reader reader=null;
64 try {
65 System.out.println("以字符为单位读取文件内容,一次一个字节:");
66 //InputStreamReader类:是字节向字符转换的桥梁
67 reader=new InputStreamReader(new FileInputStream(file));
68 int temp;
69 while ((temp=reader.read()) != -1) {
70 if (((char)temp) != '
') {
71 System.out.println((char)temp);
72 }
73 }
74 reader.close();
75 } catch (Exception e) {
76 e.printStackTrace();
77 }
78 try {
79 System.out.println("以字符为单位读取文件内容,一次读多个字节: ");
80 char[] temp=new char[30];
81 int charread=0;
82 reader=new InputStreamReader(new FileInputStream(filename));
83 while ((charread=reader.read(temp)) != -1) {
84 if ((charread == temp.length) && (temp[temp.length-1]!='
')) {
85 System.out.println(temp);
86 } else {
87 for (int i=0; i<charread; i++) {
88 if (temp[i] == '
') {
89 break;
90 } else {
91 System.out.println(temp[i]);
92 }
93 }
94 }
95 }
96 } catch (Exception e) {
97 e.printStackTrace();
98 } finally {
99 if (reader != null) {
100 try {
101 reader.close();
102 } catch (IOException e) {
103
104 }
105 }
106 }
107 }
108 /**
109 * 以行为单位读取文件,常用于读面向行的格式化文件
110 * */
111 public static void readFileByLine(String filename) {
112 File file=new File(filename);
113 BufferedReader reader=null;
114 try {
115 System.out.println("以行为单位读取文件内容,一次读一整行: ");
116 reader=new BufferedReader(new FileReader(file));
117 String temp=null;
118 int line=1;
119 while ((temp=reader.readLine()) != null) {
120 System.out.println("line " + line + ": " + temp);
121 line++;
122 }
123 reader.close();
124 } catch (IOException e) {
125 e.printStackTrace();
126 } finally {
127 if (reader != null) {
128 try {
129 reader.close();
130 } catch (IOException e) {
131
132 }
133 }
134 }
135 }
136 /**
137 * 随机读取文件内容
138 * */
139 public static void readFileByRandomAccess(String filename) {
140 RandomAccessFile randomfile=null;
141 try {
142 System.out.println("随机读取一段文件内容");
143 randomfile=new RandomAccessFile(filename,"r");
144 long fileLength=randomfile.length();
145 int beginIndex=(fileLength > 4 ? 4 : 0);
146 randomfile.seek(beginIndex);
147 byte[] bytes=new byte[10];
148 int byteread=0;
149 while ((byteread=randomfile.read(bytes)) != -1) {
150 System.out.write(bytes,0,byteread);
151 }
152 } catch (IOException e) {
153 e.printStackTrace();
154 } finally {
155 if (randomfile != null) {
156 try {
157 randomfile.close();
158 } catch (IOException e) {
159
160 }
161 }
162 }
163 }
164 private static void showAvailableBytes(InputStream in) {
165 try {
166 System.out.println("当前字节输入流中的字节数为:" + in.available());
167 } catch (IOException e) {
168 e.printStackTrace();
169 }
170 }
171 public static void main(String[] args) {
172 String filename="E:\BaiYiShaoNian.txt";
173 JavaIO.readFileByBytes(filename);
174 JavaIO.readFileByChar(filename);
175 JavaIO.readFileByLine(filename);
176 JavaIO.readFileByRandomAccess(filename);
177 }
178 }
Java写文件
1 package 天才白痴梦;
2
3 import java.io.BufferedWriter;
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.FileWriter;
8 import java.io.IOException;
9 import java.io.OutputStreamWriter;
10
11 public class JavaIO2 {
12
13 public static void main(String[] args) throws IOException {
14 String Path="E:\天才白痴梦\JAVA";
15 File file=new File("E:\天才白痴梦\JAVA","BaiYiShaoNian.txt");
16 if (!file.exists()) {
17 try {
18 file.createNewFile();
19 } catch (IOException e) {
20 e.printStackTrace();
21 }
22 }
23 /**
24 * Java写入文件的三种方法
25 * */
26 FileOutputStream fos=null;
27 BufferedWriter bw=null;
28 FileWriter fw=null;
29 int value=1000;
30
31 try {
32 fos=new FileOutputStream(new File(Path+"fos.txt"));
33 long begin=System.currentTimeMillis();
34 for (int i=1; i<=value; i++) {
35 fos.write(5);
36 }
37 long end=System.currentTimeMillis();
38 System.out.println("TheCostTime of FileOutputStream is : " + (end-begin));
39 fos.close();
40
41 bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(Path+"br.txt")),"UTF8"));
42 begin=System.currentTimeMillis();
43 for (int i=1; i<=value; i++) {
44 bw.write(5);
45 bw.newLine();
46 }
47 bw.close();
48 end=System.currentTimeMillis();
49 System.out.println("TheCostTime of BufferedWriter is : " + (end-begin));
50
51 fw=new FileWriter(Path+"fw.txt");
52 begin=System.currentTimeMillis();
53 for (int i=1; i<=value; i++) {
54 fw.write(5);
55 }
56 fw.close();
57 end=System.currentTimeMillis();
58 System.out.println("TheCostTime of FileWriter is : " + (end-begin));
59
60
61 } catch (Exception e) {
62 // TODO Auto-generated catch block
63 e.printStackTrace();
64 } finally {
65 try {
66 fos.close(); //FileOutputStream
67 bw.close(); //BufferedWriter
68 fw.close(); //FileWriter
69 } catch (Exception e) {
70 e.printStackTrace();
71 }
72 }
73
74 }
75 }