[5.23]Java 基础知识 (IO流)

时间:2022-08-16 20:01:46

什么是IO流

流(Stream):源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等。

IO流分为几类

两类:字节流和字符流

[5.23]Java 基础知识 (IO流)


什么是字节流?什么是字符流?

字节流的概念:字节流是由字节组成的,字节流是最基本的,所有的InputStream和OutputStream的子类都是字节流,主要用在处理二进制数据,它是按字节来处理的。

字符流的概念:字符流是由字符组成的,Java里字符由两个字节组成,所有的Reader和Writer的子类都是字符流,主要用在处理文本内容特定字符


字节流和字符流的区别

字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。

字节流默认不使用缓冲区;字符流使用缓冲区。

字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

字符流的常用类有哪些

Reader:BufferedReader;

               InputStreamReader;

               FileReader;

Write:BufferedWriter;

             OutputStreamWriter;

             FileWriter;

实现文件复制的思路和步骤是什么


public class Ex3 {
	public static void main(String[] args) {
		FileInputStream input = null;
		FileOutputStream  output = null;
		int n = 0;
		try {
		
			input = new FileInputStream("D:\\Lenovo\\info.txt");
			output = new FileOutputStream("D:\\Lenovo\\info1.txt");
	
			do {
				n = input.read();
				output.write(n);
			}while (n!=-1);
			
		}catch (FileNotFoundException e){
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				input.close();
				output.close();
			}catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

如何使用字符流进行文件读写

public class Test {
	public static void main(String[] args) {
		int count = 0;
		FileReader reader = null;
		BufferedReader breader =null;
		BufferedWriter writer = null;
		try {
			reader = new FileReader("D:\\Lenovo\\inof.txt");
			writer = new BufferedWriter(new FileWriter("D:\\Lenovo\\info.txt"));
			breader = new BufferedReader(reader);
			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();
				}
		
			
		
		}
	}

}