什么是io流
流(Steam)源于UNIX中(pipe)的概念。在unix中,管道是一条不间断地字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等
io流分几类
- 字节流包含InputStream和OutputStream
- z字符流包含Reader和Writer
什么是字节流?什么是字符流?
字节流是由字节组成的,字节流是最基本的,所有的InputStream和OutputStream的子类都是字节流,主要是用在处理二进制数据,他是按字节来处理的
字符流是由字符组成的,Java里字符是由两个字节组成的,所有的Reader和Writerd的子类都是字符流,主要是用在处理文本内容或特定内容
字符流和字节流的区别?
- 读写的时候一个是按字节读写的,一个是按字符
- 需要对内容按行进行处理,一般会选择字符流
- 只是读写文件,和文件内容无关的(下载复制等),一般选择字节
-
- 读:
- 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();
- }
- }
- }
- }
Input:输入流指的是将数据以字符或字节形式从外部媒介读取到内存中。
Output:输出流指的是将内存中的数据写入外部媒介。
- 2
- 3
Output:输出流指的是将内存中的数据写入外部媒介。