前言
-
IO流经典代码示例, 会十不如精一,望大家既精又博;
-
IO:是Input和Output的简写,也就是读取和写入;
-
资源介绍:常用的21个IO流代码示例:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、FileInputStream、OutputStream、ByteArrayOutputStream、SequenceInputStream、BufferedOutputStream、BufferedInputStream、PipedReader、PipedWriter、PipedInputStream、PipedOutputStream。
-
JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。
二、经典代码简单示例
1.字符流–演示截取方法7
字符流代码如下(示例):
/**
* 字符流演示方法7 ---其他演示方法请查看上方资源链接
* InputStreamReader是FileReader的父类,使用方法和FileReader没有区别
*/
public static void charIoExample7() throws IOException {
File file = new File("C:\\Users\\gongjin28\\Desktop\\test\\test2.txt");
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");
char[] s = new char[1024];
int len;
while ((len = isr.read(s)) != -1) {
osw.write(new String(s, 0, len));
}
// 闭流
isr.close();
osw .close();
}
2.缓冲字符流–演示截取方法2
缓冲字符流代码如下(示例):
/**
* 缓冲字符流演示方法2---readLine方法,其他演示方法请查看上方资源链接
*/
private static void charIoBufferExample2() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\gongjin28\\Desktop\\test\\test.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("C:\\Users\\gongjin28\\Desktop\\test\\result.txt"), true));
BufferedWriter bw3 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("C:\\Users\\gongjin28\\Desktop\\test\\result.txt"), true), "UTF-8"));
// 相对来说,readLine()用的频率比上面的read()方法要高
String line;
while ((line = br.readLine()) != null) { // 读取一行,一行是由换行('\n'),回车('\r'),或者回车后紧跟着换行来结束的。他的defaultCharBufferSize为8192。
bw.write(line); // 写入一行
bw.newLine(); // 换行,当while循环循环结束,其实是多一个换行符的(目前没找到解决办法)
bw.flush();
}
br.close();
bw.close();
}
3.字节流–演示截取方法5
字节流代码如下(示例):
/**
* 字节流演示方法5---字节数组读写图片,其他演示方法请查看上方资源链接
*/
private static void byteIoExample5() throws IOException {
InputStream is = new FileInputStream("C:\\Users\\gongjin28\\Desktop\\test\\JAVA IO流_wm.png");
OutputStream os = new FileOutputStream(new File("C:\\Users\\gongjin28\\Desktop\\test\\JAVA IO流_copy.png"), true);
int len;
byte[] bytes = new byte[1024];
while ((len = is.read(bytes)) != -1) {
os.write(bytes, 0, len);
os.flush();
}
is.close();
os.close();
}
4.缓冲字节流–演示截取方法4
缓冲字节流代码如下(示例):
/**
* 缓冲字节流演示方法4---copy视频。其他演示方法请查看上方资源链接
*/
private static void byteIoBufferExample4() throws IOException {
// bis和bos两种创建对象的方式
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("C:\\Users\\gongjin28\\Desktop\\test\\Video_2021-11-30_100043.wmv")));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\gongjin28\\Desktop\\test\\Video_2021-11-30_100043.mp4", true));
int len;
byte[] bytes = new byte[8192]; // BufferedInputStream第53行默认的BUFFER_SIZE就是8192
while ((len = bis.read(bytes)) != -1) {
bos.write(bytes, 0, len);
bos.flush();
}
bis.close();
bos.close();
}
三、IO流逻辑图