IO字符流

通过码表读取字符
中文的第一个字节都是负数,可以通过这点进行判断。

FileReader fr = new FileReader("1.txt");
int c;
while((c=fr.read())!=-1) {
	System.out.println((char)c);
}
fr.close();

IO字符流进行copy

FileReader fr = new FileReader("1.txt");
FileWriter fw = new FileWriter("2.txt");
int c;
while((c=fr.read())!=-1) {
	fw.write(c);
}
fr.close();
fw.close();

//字符流只能copy纯文本
//因为在读的时候会将字节转换成字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节输出。如果是?,直接写出,这样写出之后的文件就乱了,看不了了。

字符流数组copy文件

FileReader fr = new FileReader("1.txt");
FileWriter fw = new FileWriter("33.txt");
char[] arr=new char[1024];
int len;
while((len=fr.read(arr))!=-1) {
	fw.write(arr,0,len);
}
fr.close();
fw.close();

利用缓冲区进行copy,BufferedReader 和BufferedWriter

BufferedReader br = new BufferedReader(new FileReader("1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("66.txt"));
int b;
while((b=br.read())!=-1) {
	bw.write(b);
}
br.close();
bw.close();

BufferedReader的**readLine()方法,每次读一行。
BufferedWriter的
newLine()**方法,换行。

BufferedReader fr = new BufferedReader(new FileReader("1.txt"));
BufferedWriter fw = new BufferedWriter(new FileWriter("45.txt"));
String line;
while((line=fr.readLine())!=null) {
//			newLine()与\r\n的区别:
//			newLine()是快平台的方法
//			\r\n只支持的是window的系统
	fw.write(line);
//	fw.write("\r\n");
	fw.newLine();
}
fr.close();
fw.close();

实现文件反转:

BufferedReader br = new BufferedReader(new FileReader("1.txt"));
ArrayList<String> list=new ArrayList<String>();
String line;
while((line=br.readLine())!=null) {
	list.add(line);
}
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("78.txt"));
for(int i=list.size()-1;i>0;i--) {
	bw.write(list.get(i));
	bw.newLine();
}		
bw.close();

LineNumberReader 设置行数,和设置起始行数。

LineNumberReader lnr = new LineNumberReader(new FileReader("1.txt"));
String line;
lnr.setLineNumber(100);
while((line=lnr.readLine())!=null) {
	System.out.println(lnr.getLineNumber());
}
lnr.close();

装饰设计模式的简单演示:
//装饰设计模式的好处:
//耦合性不强,被装饰类的变化与装饰类的变化无关。

dashen da = new dashen(new Student());
da.code();
interface Coder{
	public void code();
}
class Student implements Coder{

	@Override
	public void code() {
		// TODO Auto-generated method stub
		System.out.println("123");
		System.out.println("456");
	}
	
}
class dashen implements Coder{
	private Student s;
	public dashen(Student s) {
		this.s=s;
	}
	@Override
	public void code() {
		// TODO Auto-generated method stub
		s.code();
		System.out.println("789");
		System.out.println("000");
	}
}

使用指定的编码表进行读写

InputStreamReader  isr= new InputStreamReader(new FileInputStream("utf_8.txt"),"utf-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"),"UTF-16");
int c;
while((c=isr.read())!=-1) {
	osw.write(c);
}
isr.close();
osw.close();

进阶版

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("utf_8.txt"),"utf-8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("gbk.txt"),"gbk"));
int c;
while((c=br.read())!=-1) {
	bw.write(c);
}
br.close();
bw.close();

获取文本上字符出现的个数

BufferedReader br=new BufferedReader(new FileReader("1.txt"));
		TreeMap<Character, Integer> tm = new TreeMap<>();
		int c;
		while((c=br.read())!=-1) {
			char ch=(char)c;
			/*
			 * if(!tm.containsKey(ch)) { tm.put(ch, 1); }else { tm.put(ch, tm.get(ch)+1); }
			 */
			tm.put(ch, !tm.containsKey(ch)?1:tm.get(ch)+1);
		}
		br.close();
		BufferedWriter bw = new BufferedWriter(new FileWriter("2.txt"));
		for (Character key : tm.keySet()) {
			switch (key) {
			case '\t':
				bw.write("\\t"+":"+tm.get(key));
				break;
			case '\n':
				bw.write("\\n"+":"+tm.get(key));
				break;
			case '\r':
				bw.write("\\r"+":"+tm.get(key));
				break;
			default:
				bw.write(key+":"+tm.get(key));
				break;
			}
			bw.newLine();
		}
		bw.close();

试用版软件的案例

BufferedReader br = new BufferedReader(new FileReader("config.txt"));
		
		String line = br.readLine();
		int times=Integer.parseInt(line);
		if(times>0) {
			System.out.println(times--);
		}else {
			System.out.println("000");
		}
		FileWriter fw = new FileWriter("config.txt");
		fw.write(times+"");
		br.close();
		fw.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值