java文件字符输入流(java.io.FileReader )和文件字符输出流(java.io.FileWriter )

java.io.Reader

*java.io.Reader 用于读取字符流的抽象类。 子类必须实现的唯一方法是read(char [],int,int)和close()。
*abstract void close() 关闭流并释放与之相关联的任何系统资源。
*int read() 读一个字符
*int read(char[] cbuf) 将字符读入数组。
*abstract int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。

java.io.FileReader

继承关系:
public class InputStreamReader extends Reader
public class FileReader extends InputStreamReader
FileReader :文件字符输入流,将文件字符从硬盘读取到内存中

构造方法

FileReader(File file) 创建一个新的 FileReader ,给出 File读取。
FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。
*参数file和fileName :数据读取源

测试用例:

public class ReaderText1 {

	public static void main(String[] args) throws IOException {
		
		//创建用FileReader 并指向一个文件
		FileReader fr = new FileReader("F:\\Users\\book\\文学作品\\text\\不朽.txt");
		//使用 int read(char[] cbuf, int off, int len) 方式读取
		int len=0;
		char[] chars=new char[1024];
		while((len=fr.read(chars))!=-1) {
			//String(char[] value, int offset, int count)  分配一个新的 String ,其中包含字符数组参数的子阵列中的字符。
				System.out.print(new String(chars,0,len));				
			
		}
		
	}

}

java.io.Writer

public abstract class Writer 字符输出流,是所有字符输出类的父类
重要方法:
*abstract void close() 关闭流,先刷新。
*abstract void flush() 刷新流。
*void write(char[] cbuf) 写入一个字符数组。
*abstract void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
*void write(int c) 写一个字符
*void write(String str) 写一个字符串
*void write(String str, int off, int len) 写一个字符串的一部分。

java.io.FileWriter

继承关系:
java.io.OutputStreamWriter extends Writer
java.io.FileWriter extends OutputStreamWriter
FileWriter:文件字符写入流,把内存中数据写入到文件中

构造方法

—FileWriter(File file) 给一个File对象构造一个FileWriter对象。
—FileWriter(String fileName) 构造一个给定文件名的FileWriter对象。
—FileWriter(String fileName) 构造一个给定文件名的FileWriter对象。
—FileWriter(String fileName, boolean append) 构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。

FileReader 、FileWriter 综合测试用例——文档内容的复制

测试1:

调用FileReader 实例对象的read方法将数据存放到字符数组cs中,再调用FileWriter实例对象的write(char[] cbuf, int off, int len) 方法将对应内容写到硬盘中

public class WriteText1 {

	public static void main(String[] args) throws IOException {
		//创建一个读取
		FileReader fr = new FileReader("F:\\Users\\book\\文学作品\\text\\不朽.txt");
		//创建一个写入
		FileWriter fw = new FileWriter("F:\\Users\\book\\文学作品\\text\\demo.txt");
		
		char [] cs=new char[1024];
		int len=0;
		int count=0; 
		while((len=fr.read(cs))!=-1) {
			fw.write(cs,0,len);
		}
		fw.close();
		fr.close();
		 System.out.println("OK");
	}

}

测试2:给txt文本添加换行

public class WriteText1 {

	public static void main(String[] args) throws IOException {
		//创建一个读取
		FileReader fr = new FileReader("F:\\Users\\book\\文学作品\\text\\不朽.txt");
		//创建一个写入
		FileWriter fw = new FileWriter("F:\\Users\\book\\文学作品\\text\\demo.txt");
		
		char [] cs=new char[1024];
		int len=0;
		int count=0;
		
		//一次读取一个字符
		while((len=fr.read())!=-1) {
			count++;//没读取到一个字符,计数加一
			if(count==80) {//如果计数为65,表明该段需要换行,写入一个换行符
				fw.write("\n");
			}
			char ch=(char)len;
			if(ch=='\n') {//每次如果读取到换行符,计数清零
				count=0;
			} 
			fw.write(ch); 
		} 
		fw.close();
		fr.close();
		 System.out.println("OK");
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值