Java_IO

总述:Input 和Output,

流分为低级流和高级流。

低级流:实际链接程序与另一端的管理,负责在两端之间传送数据,读写一定是建立在低级流的基础上进行的。

高级流:不能独立存在,可以链接在其他流上,高级流自带对某种对数据的加工操作,所以数据流经该流会对这些数据进行处理,这样可以简化我们对数据的处理操作

FileInputStream
FileInputStream obtains input bytes from a file in a file system.
FileOutputStream
A file output stream is an output stream for writing data to a File or to a FileDescriptor.

这是一对低级流

BufferedInputStream
BufferedInputStream adds functionality to another input stream-namely, the ability to buffer the input and to support the mark and resetmethods.
BufferedOutputStream
The class implements a buffered output stream.

这是高级流中的缓冲流,实现在换行符那里自动换行

InputStreamReader
An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.
OutputStreamWriter
An OutputStreamWriter is a bridge from character streams to byte streams: Characters written to it are encoded into bytes using a specified charset.

这是高级流的转换流,实现字节向字符转换

PrintWriter
Prints formatted representations of objects to a text-output stream.

一个自带上面3种流的高级流

放个案例,加深理解

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

/**
 * 简易记事本工具 程序起动后,要求用户输入一个文件名,然后对该文件 进行写操作
 * 每当用户在控制台输入一行字符串,都将该字符串按行写入到文件中,当用户输入“exit”时程序推出。 使用pw实现,用流连接形式创建
 * 
 * @author soft01
 *
 */
public class Note06 {
	public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
		//Demo1();
	}

	private static void Demo1() throws UnsupportedEncodingException, FileNotFoundException {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入文件名字");
		String name = scanner.nextLine();
		/*
		 * PrintWriter的构造方法中若第一个参数为流 那么就支持一个重载构造方法,允许再串入一个 boolean值类型的参数,若该值为true,则具有
		 * 自动换行刷新功能 即:每当使用println方法读写一行字符串后就会 自动flush
		 */
		PrintWriter pw = new PrintWriter(
				new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name), "UTF-8")), true);
		System.out.println("请输入文件内容");
		while (true) {

			String line = scanner.nextLine();
			/*
			 * 字符串当遇到字面量与变量进行内容比较时 应当使用:字面量.equal(变量) 因为变量在实际开发中不能保证null,所以
			 * 可能引发空指针异常,字面量一定不时空所以 不会出现该现象
			 */
			if ("exit".equals(line)) {
				break;
			}
			pw.println(line);
		}
		System.out.println("再见");
		pw.close();
		
	}
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页