输入流与输出流

流按着数据的传输方向分为:
-输入流:往内存中读叫输入流。
-输出流:从内存中往外写叫输出流。
所有输入流都是InputStream类或者Reader类的子类。
-类名以InputStream结尾的类都是InputStream的子类。
-类名以Reader结尾的类都是Reader类的子类。
所有输出流都是OutputStream类或者Writer类的子类。
-类名以OutputStream结尾的类都是OutputStream的子类。
-类名以Writer结尾的类都是Writer类的子类。

数据流编码格式上划分

从数据流编码格式上划分为:
-字节流
-字符流
InputStream和OutputStream的子类都是字节流。
-可以读写二进制文件,主要处理音频、图片、歌曲、字节流处理单元为1个字节。
Reader和Writer的子类都是字符流。
-主要处理字符或字符串,字符流处理单元为2个字节。
-字节流将读取到的字节数据,去指定的编码表中获取对应文字。

字节流中常用类

-字节输入流 FileInputStream
-字节输出流 FileOutputStream

字符流中常用类
-字符输入流 FileReader
-字符输出流 FileWriter

字节输入流

public static void show3() throws IOException{
		System.out.println("方法三");
		File file=new File("a.txt");		
		FileInputStream input=new FileInputStream(file);	
		FileOutputStream output=new FileOutputStream("b.txt");
		byte [] bys=new byte[1024*1024];//1M  每次读取1M
		int read=input.read(bys);
		while(read!=-1){		
			//写入字节
			output.write(bys,0,read); //正好结束  read会自动增加的  
			//读取下一个字节码
			read=input.read();
		}
		System.out.println("保存成功");
	}
public static void show2() throws IOException{
		System.out.println("方法二");
		File file=new File("a.txt");		
		FileInputStream input=new FileInputStream(file);	
		FileOutputStream output=new FileOutputStream("b.txt");
		byte [] bys=new byte[1024*1024];//1M  每次读取1M
		int read=input.read(bys);
		while(read!=-1){
			System.out.println(read);
			//写入字节
			output.write(read); //每次写1M  最后会增大写入文件的内存 因为每次都增加1M
			//读取下一个字节码
			read=input.read();
		}
		System.out.println("保存成功");
	}

字符输入流

writer.flush(); 刷新缓存区 不刷新就显示不出数据
writer.close(); //close方法默认调用flush方法 先刷新后调用

public static void main(String[] args) throws IOException {
	FileReader reader=new FileReader("a.txt");
	FileWriter writer=new FileWriter("aa.txt");
	
	System.out.println("方法一");
	
	/*int read =reader.read();
	
	while(read!=-1){
		writer.write(read);
		read=reader.read();
	}
	writer.flush();  刷新缓存区  不刷新就显示不出数据
	*/
	System.out.println("方法二");
	char cs[] =new char[10];
	int read =reader.read(cs);
	while(read!=-1){
		writer.write(cs,0,read);
		read=reader.read();
	}
	writer.close(); //close方法默认调用flush方法 先刷新后调用
}

节点流与处理流

根据封装类型不同流又分为:
-节点流
-处理流

节点流:

如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流。

处理流。

如果流封装的是其它流对象,称为处理流。处理流提供了缓冲功能,提高读写效率。

节点流中常用类

字节输入流 FileInputStream
-字节输出流 FileOutputStream
-字符输入流 FileReader
-字符输出流 FileWriter

处理流中常用类

缓冲字节输出流 BufferedOutputStream
-缓冲字节输入流 BufferedInputStream
-缓冲字符输入流 BufferedReader
-缓冲字符输出流 BufferedWriter

缓冲区原理:

-缓冲区的概念。
-缓冲区的作用:要对操作的数据进行临时的缓存,提高了读写效率。
-缓冲区如何提高读写效率。

处理流的特点:

-字符缓冲输入流提供了读取一行的方法readLine() 。
-字符缓冲输出流提供了写入一个空行的方法newLine()。
-字符缓冲输出流,把写入的数据先写入到内存,在使用flush()方法将内存数据刷到硬盘上。
注意:在使用字符输出流时,一定先flush(),然后在close(),避免数据的丢失。

// 序列化 将对象序列化到内容中
	public static void output(ArrayList<Students> list ) throws Exception{
			ObjectOutputStream objectoutputStream= new ObjectOutputStream(new FileOutputStream("Student.txt"));
			objectoutputStream.writeObject(list);
	}
	// 读取内容
	public static void input(ArrayList<Students> list) throws Exception{
		ObjectInputStream objectinputStream= new ObjectInputStream(new FileInputStream("Student.txt"));
		Object readObeject =objectinputStream.readObject();
		System.out.println(readObeject);
}

字符流与字节流的转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值