Java常见IO流的使用

都在复习Java期末考试,貌似大家最害怕的就是这个(估计期末考试难度也就考到这个了),所以就总结一下写出来了供参考:
直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
import java.io.*;
/**
*
* @author KevinWu 文件操作示例
*
*/
public class FileHandle {

public static void main(String[] args) {
// TODO Auto-generated method stub
FileHandle myFileHandle = new FileHandle();
myFileHandle.readTxtFile("a.txt");
myFileHandle.copyTxtFile("a.txt", "b.txt");
myFileHandle.copyNonTxtFile("111.pdf", "222.pdf");
myFileHandle.outPut("测试输出字符串", "test.txt");
myFileHandle.creatFolder(".", "我是新建的文件夹");// 路径给点,表示当前目录
}

/**
* 方法作用:读取文本文件的方法 参数:待读取文件的路径
*/
public void readTxtFile(String file_dir) {
// 创建并实例化文件对象
File myFile = new File(file_dir);
// 判断该对象对应的路径下是不是存在这个文件和是不是文件类型
if (!myFile.exists() || !myFile.isFile()) {
System.out.println("文件不存在或不是文件类型");
} else {
// 新建FileReader对象
FileReader myFileReader = null;
// 新建BufferedReader对象
BufferedReader myBufferedReader = null;
try {
// 实例化FileReader对象
myFileReader = new FileReader(myFile);
// 实例化BufferedReader对象
myBufferedReader = new BufferedReader(myFileReader);
// 定义一个字符串来接收文件的一行内容
String str = "";
while ((str = myBufferedReader.readLine()) != null) {
// 把读取到的内容输出
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 在这里关闭缓冲流和输入流,注意要一层一层关
if (myBufferedReader != null) {
try {
myBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (myFileReader != null) {
try {
myFileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

/**
* 方法作用:复制文本文件方法 参数1:待复制的文件的路径 参数2:复制目标的文件的路径
*/
public void copyTxtFile(String f_dir, String t_dir) {
// 创建并实例化文件对象
File fFile = new File(f_dir);
File tFile = new File(t_dir);
// 先判断源文件存不存在和是不是文件类型,就不考虑文件是否可读的问题了
if (!fFile.exists() || !fFile.isFile()) {
System.out.println("文件不存在或者不是文件类型");
} else {
// 创建FileReader对象
FileReader myFileReader = null;
// 创建FileWriter对象
FileWriter myFileWriter = null;
// 创建BufferedReader和BufferedWriter对象
BufferedReader myBufferedReader = null;
BufferedWriter myBufferedWriter = null;
try {
// 实例化FileReader和BufferedReader对象
myFileReader = new FileReader(fFile);
myBufferedReader = new BufferedReader(myFileReader);
// 实例化FileWriter和BufferedWriter对象
myFileWriter = new FileWriter(tFile);
myBufferedWriter = new BufferedWriter(myFileWriter);
// 用一个字符串接受数据
String str = "";
while ((str = myBufferedReader.readLine()) != null) {
myBufferedWriter.write(str);
// 换行
myBufferedWriter.newLine();
// 刷新缓冲流
myBufferedWriter.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (myBufferedWriter != null) {
try {
myBufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (myFileWriter != null) {
try {
myFileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (myBufferedReader != null) {
try {
myBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (myFileReader != null) {
try {
myFileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

/**
* 方法作用:复制非文本文件方法 参数1:待复制文件的路径 参数2:复制目标文件的路径
*/
public void copyNonTxtFile(String f_dir, String t_dir) {
File fFile = new File(f_dir);
File dFile = new File(t_dir);
if (!fFile.exists() || !fFile.isFile()) {
System.out.println("文件.....");
} else {
FileInputStream fis = null;
FileOutputStream fos = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
fis = new FileInputStream(fFile);
fos = new FileOutputStream(dFile);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
byte b[] = new byte[1024];
int length;
while ((length = bis.read(b)) != -1) {
bos.write(b, 0, length);
bos.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
}

/**
* 方法作用:把字符串内容输出到文本文件 参数1:待输出的字符串 参数2:目标文件路径
*/
public void outPut(String dstStr, String f_dir) {
File fFile = new File(f_dir);
try {
FileWriter myFileWriter = new FileWriter(fFile, true);// 设置为追加
PrintWriter pw = new PrintWriter(myFileWriter);
pw.println(dstStr);
// 方便起见直接在这里关闭了
pw.close();
myFileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 创建文件夹 参数1:待创建的文件夹的路径 参数2:待创建的文件夹的名称
*/
public void creatFolder(String f_dir, String f_name) {
File fDir = new File(f_dir + "/" + f_name);
if (fDir.exists()) {
System.out.println("文件夹已经存在");
} else {
fDir.mkdirs();// 创建文件夹,如果父目录不存在一并创建
}
}

}
文章作者: Kevin Wu
文章链接: https://kevinwu.cn/p/324a1e82/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KevinWu的博客
支付宝打赏