关闭

黑马程序员----JAVASE之IO流操作【字符流】

标签: io流字符流黑马程序员博客编程
297人阅读 评论(0) 收藏 举报
分类:

                                                                -------------- android培训java培训、期待与您交流! ---------------


1.FileWriter和FileReader
当我们处理一些纯文本的数据时,例如txt文件,我们就可以优先考虑字符流操作文件了。

Reader
    |-- InputStreamReader
         |-- FileReader 处理文件的字符读取流对象

Writer
    |-- OutputWriter
        |-- FileWriter  处理文件的字符写入流对象


Reader常用的方法:
     1. int read();  读取一个字符。返回的是读到的那个字符。如果读到流的末尾,返回-1.
      2.int reade(char[]) 
          将读到的字符存入指定的数组中,返回的是读到的字符个数,也就是往数组里装的元素的个数。如果读到流的末尾,返回-1.
     3.close();读取字符其实用的是window系统的功能,就希望使用完毕后,进行资源的释  放。

Writer中的常见的方法:
     1.write(ch): 将一个字符写入到流中。   
     2.write(char[]): 将一个字符数组写入到流中。   
     3.write(String): 将一个字符串写入到流中。  
     4.flush():刷新流,将流中的数据刷新到目的地中,流还存在。   
     5.close():关闭资源:在关闭前会先调用flush(),刷新流中的数据去目的地。然流关闭。

FileWriter:   
     1,用于处理文本文件。   
     2,该类中有默认的编码表,  
     3,该类中有临时缓冲。

FileReader:   
     1,用于读取文本文件的流对象。   
      2,用于关联文本文件。

package cn.itheima.io;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;

public class FileWriterAndReader {
	
	public static void main(String[] args) throws Exception {
		Reader reader = new FileReader("c:\\1.txt");
		Writer writer = new FileWriter("c:\\2.txt");
		
		char[] buffer = new char[1024];
		int len = 0;
		while((len=reader.read(buffer))!=-1){
			writer.write(buffer, 0, len);
			writer.flush();
		}
		
		reader.close();
		writer.close();
	}
	
	

}


2.BufferedWriter和BufferedReader
     毋庸置疑缓冲区的出现提高对流的操作效率,他的原理就是讲数组进行了封装。

对应的对象:
BufferedWriter:特有的方法,newLine();具有跨平台的换行符。
BufferedReader:特有的方法:readLine();一次可以读取一行,当读到末尾时,返回null。

注:缓冲的存在是为了增强流的功能而存在的,所以建立缓冲区对象首先要创建对应的流对象。
package cn.itheima.io;

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

public class BufferedWriterAndReader {
	public static void main(String[] args) throws Exception {
		
		Reader reader = new FileReader("c:\\1.txt");
		Writer writer = new FileWriter("c:\\3.txt");
		
		BufferedWriter bufferedWriter = new BufferedWriter(writer);
		BufferedReader bufferedReader = new BufferedReader(reader);
		
		String str = null;
		while((str = bufferedReader.readLine())!=null){
			bufferedWriter.write(str);
			bufferedWriter.newLine();
			bufferedWriter.flush();
		}
		
		bufferedReader.close();
		bufferedWriter.close();
		
	}

}

readLine():方法的原理: 
       其实缓冲区中的该方法,用的还是与缓冲区关联的流对象的read方法。  只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储。   当读取到回车标记时,将临时容器中存储的数据一次性返回。


                                   -------------- android培训java培训、期待与您交流! ---------------


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6862次
    • 积分:226
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档