黑马程序员 IO流学习笔记二

----------android培训java培训、java学习型技术博客、期待与您交流!----------

 IO流学习笔记二:

通过学习毕老师的基础视频我们知道,按照流中元素的基本类型,流分为字节流和字符流两种:

字节流:以字节为流中元素的基本类型,每次读写的最小单位是一个字节,字节输入流类时InputStream类及其子类,字节输出流类是OutputStream类及其子类。

字符流:以字符为流中元素的基本类型,每次读写的最小单位是一个字符,在java中,是2字节的Unicode码。字符输入流是Reader类及其子类,字符输出流类是Writer类及其子类。

1、FileInputStream类实现对文件的读操作时的数据传输

FileInputStream类有两个常用的构造方法,FileInputStream(String name)和FileInputStream(File file),并提供int read()、int read(byte[] b) 和int read(byte[] b,int off,int len)这几个常用的方法用于读取输入流中的数据。

2、FileOutputStream类实现对文件的写入操作时的数据传输

FileOutputStream类的常用构造方法有FileOutputStream(File file)、FileOutputStream(String name)和FileOutputStream(String name,booleanappend),其中,FileOutputStream(String name,booleanappend)这个构造方法中的append参数指定是否以添加的方式写入,为true时数据添加至原文末尾(即续写),为false时数据从文件开始处写入数据(覆盖重写),默认为false。所以这里就必须注意了,在使用FileOutputStream的构造函数数时,若指定的文件不存在,则系统会新建一个文件后往文件里写入数据。若文件已经存在,当append取false时,会从头开始写入数据,这样会导致原有数据的丢失。FileOutputStream类提供write(int b)、write(byte[] b)和write(byte[] b,int off,int len)这几个将数据写入流中的方法。

3、BufferedInputStream与BufferedOutputStream能够提供高效的字节流数据的读取与写入操作。

4、字节流还包括数据字节流、对象字节流和管道字节流(拓展知识)

(1)、数据字节流:java将基本数据类型数据的读写封装成了数据字节流,数据字节输入流DataInputStream类和数据字节输出流DataOutputStream类直接提供读写8种数据类型数据的方法。

(2)、对象字节流:对记录式文件进行读写操作,可以利用对象输入流ObjectInputStream类和对象输出流ObjectInputStream类以对象为单位读取或写入一个对象。

(3)、管道字节流:数据可以在内存的两个对象之间流动,管道流提供在对象之间传输数据的基本手段。管道输入流与输出流均可以是字节流,也可以是字符流。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderAndWriter {

	public static void main(String[] args) throws IOException {
		new BufferedReaderAndWriter("BufferedReaderAndWriter.java", "BufferedReaderAndWriter2.txt");
		copyByteFile();
	}
	private static String resFile;//文件名
	private static String disFile;//拷贝后的文件名
	BufferedReaderAndWriter(String resFile,String disFile){
		BufferedReaderAndWriter.resFile = resFile;
		BufferedReaderAndWriter.disFile = disFile;
	}
	public static  void copyByteFile() throws IOException{

		BufferedReader bufr = new BufferedReader(new FileReader(resFile));//创建文件读取流对象
		BufferedWriter bufw = new BufferedWriter(new FileWriter(disFile));创建文件写入流对象
		String buf = null;//字符缓冲区
		while ((buf = bufr.readLine())!=null) {
			bufw.write(buf);//写入数据
			bufw.newLine();//换行
			bufw.flush();//刷新bufw的缓冲区
		}
		bufr.close();//关闭读取流
		bufw.close();//关闭写入流
	}
}


总结:流分为字节流和字符流两种



----------android培训java培训、java学习型技术博客、期待与您交流!----------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值