1.什么是I0流
流(Stream):源于UNIX中管道(pipe)的概念。 在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。
流(Stream):源于UNIX中管道(pipe)的概念。 在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。
2. I:输入流指的是将数据以字符或字节形式从外部媒介读取到内存中。
O :输出流指的是将内存中的数据写入外部媒介。
3. IO流的分类:字节流和字符流。
字节流包含:InputStream和OutputStream
字符流包括:Reader和Writer
4.
字节流的概念:
字节流是由字节组成的,字节流是最基本的,所有的InputStream和OutputStream的子类都是字节流,主要用在处理二进制数据,它是按字节来处理的。
字符流的概念:(附代码)
字符流是由字符组成的,Java里字符由两个字节组成,所有的Reader和Writer的子类都是字符流,主要用在处理文本内容或特定字符
5. 字节流和字符流的区别:
1. 一个是按字节读写,一个是按字符。
2. 需要对内容按行处理,一般会选择字符流。
3. 只是读写文件和文件内容无关(下载,复制等),一般选择字节流。
读:
BufferedReader:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Read2 {
public static void main(String[] args) {
int count = 0;
FileReader reader = null;
BufferedReader breader = null;
try {
reader = new FileReader("D:\\lenovo\\info.txt");
breader = new BufferedReader(reader);
String temp = "";
while((temp=breader.readLine())!=null) {
System.out.println(temp);
count++;
}
System.out.println("共循环"+count+"次");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
breader.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
写:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Write {
public static void main(String[] args) {
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("D:\\lenovo\\info.txt",true));
writer.newLine();
writer.write("Hello");
writer.newLine();
writer.write("中国");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文本复制:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ReaderWriter {
public static void main(String[] args) {
int count = 0;
FileReader reader = null;
BufferedReader breader = null;
BufferedWriter writer = null;
try {
reader = new FileReader("D:\\lenovo\\info.txt");
breader = new BufferedReader(reader);
writer = new BufferedWriter(new FileWriter("D:\\lenovo\\info1.txt"));
String temp = "";
while((temp=breader.readLine())!=null){
writer.write(temp);
writer.newLine();
}
writer.flush();
System.out.println("共循环"+count+"次");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
breader.close();
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}