字符流

* OutputStreamWriter的方法:
*
* public void write(int c);//写一个字符
* public void write(char cbuf[]);//写一个字符数组
* public void write(char cbuf[],int off,int len);//写一个字符数组的一部分
* public void write(String str);//写一个字符串
* public void write(String str,int off,int len);//写一个字符串的一部分
*
* 面试题:
* close()和flush()的区别?
* close()关闭流对象,但是先刷新一次缓冲区,关闭以后,该对象不可以继续再使用了。
* flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/*
 * OutputStreamWriter的方法:
 * 
 * public void write(int c);//写一个字符
 * public void write(char cbuf[]);//写一个字符数组
 * public void write(char cbuf[],int off,int len);//写一个字符数组的一部分
 * public void write(String str);//写一个字符串
 * public void write(String str,int off,int len);//写一个字符串的一部分
 * 
 * 面试题:
 * close()和flush()的区别?
 * close()关闭流对象,但是先刷新一次缓冲区,关闭以后,该对象不可以继续再使用了。
 * flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {

		FileOutputStream fos = new FileOutputStream("E:\zikao\file\cs.txt");

		OutputStreamWriter osw = new OutputStreamWriter(fos);

		osw.write("我爱你");

		osw.close();
	}
}

* InputStreamReader的方法:
*
* int read();//一次读取一个字符
* int read(char chs[]);//一次读取一个字符数组

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/*
 * InputStreamReader的方法:
 * 
 * int read();//一次读取一个字符
 * int read(char chs[]);//一次读取一个字符数组
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {

		FileInputStream fis = new FileInputStream("E:\zikao\file\cs.txt");

		InputStreamReader isr = new InputStreamReader(fis);

		int ch = 0;
		while ((ch = isr.read()) != -1) {
			System.out.print((char) ch);
		}

		isr.close();
	}
}

* 字符缓冲流的特殊方法:
*
* BufferedReader:
* public String readLine();//一次读取一行数据
* 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null
*
* BufferedWriter:
* public void newLine();//根据系统来决定换行符

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

/*
 * 字符缓冲流的特殊方法:
 * 
 * BufferedReader:
 * public String readLine();//一次读取一行数据
 * 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null
 * 
 * BufferedWriter:
 * public void newLine();//根据系统来决定换行符
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		myWrite();
		myRead();
	}

	public static void myRead() throws IOException {
		FileReader fr = new FileReader("E:\zikao\file\cs.txt");
		BufferedReader br = new BufferedReader(fr);

		String line = null;

		while ((line = br.readLine()) != null) {
			System.out.println(line);
		}
	}

	public static void myWrite() throws IOException {
		FileWriter fw = new FileWriter("E:\zikao\file\cs.txt");
		BufferedWriter bw = new BufferedWriter(fw);

		for (int i = 0; i < 10; i++) {
			bw.write("hello" + i);
			bw.newLine();
			bw.flush();
		}

		bw.close();
	}
}

* 字符流5种方式复制文件:
*
* 复制数据,如果使用记事本打开后能够读懂,就用字符流,否则用字节流
* 通过该原理,用字符流更方便
* 字符流有5种方式复制数据,推荐掌握第5种
*
* 基本字符流一次读写一个字符
* 基本字符流一次读写一个字符数组
* 字符缓冲流一次读写一个字符
* 字符缓冲流一次读写一个字符数组
* 字符缓冲流一次读写一个字符串

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

/*
 * 字符流5种方式复制文件:
 * 
 * 复制数据,如果使用记事本打开后能够读懂,就用字符流,否则用字节流
 * 通过该原理,用字符流更方便
 * 字符流有5种方式复制数据,推荐掌握第5种
 *
 * 基本字符流一次读写一个字符
 * 基本字符流一次读写一个字符数组
 * 字符缓冲流一次读写一个字符
 * 字符缓冲流一次读写一个字符数组
 * 字符缓冲流一次读写一个字符串
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		method1("E:\zikao\cs.txt", "E:\zikao\file\1.txt");
		method2("E:\zikao\cs.txt", "E:\zikao\file\2.txt");
		method3("E:\zikao\cs.txt", "E:\zikao\file\3.txt");
		method4("E:\zikao\cs.txt", "E:\zikao\file\4.txt");
		method5("E:\zikao\cs.txt", "E:\zikao\file\5.txt");
	}

	// 基本字符流一次读写一个字符
	public static void method1(String srcString, String destString) throws IOException {
		long start = System.currentTimeMillis();

		FileReader fr = new FileReader(srcString);
		FileWriter fw = new FileWriter(destString);

		int ch;
		while ((ch = fr.read()) != -1) {
			fw.write(ch);
		}

		fw.close();
		fr.close();

		long end = System.currentTimeMillis();

		System.out.println("共耗时:" + (end - start) + "毫秒");
	}

	// 基本字符流一次读写一个字符数组
	public static void method2(String srcString, String destString) throws IOException {
		long start = System.currentTimeMillis();

		FileReader fr = new FileReader(srcString);
		FileWriter fw = new FileWriter(destString);

		char chs[] = new char[1024];
		int len = 0;
		while ((len = fr.read(chs)) != -1) {
			fw.write(chs, 0, len);
		}

		fw.close();
		fr.close();

		long end = System.currentTimeMillis();

		System.out.println("共耗时:" + (end - start) + "毫秒");
	}

	// 字符缓冲流一次读写一个字符
	public static void method3(String srcString, String destString) throws IOException {
		long start = System.currentTimeMillis();

		FileReader fr = new FileReader(srcString);
		FileWriter fw = new FileWriter(destString);

		BufferedReader br = new BufferedReader(fr);
		BufferedWriter bw = new BufferedWriter(fw);

		int ch;
		while ((ch = br.read()) != -1) {
			bw.write(ch);
		}

		bw.close();
		br.close();

		long end = System.currentTimeMillis();

		System.out.println("共耗时:" + (end - start) + "毫秒");
	}

	// 字符缓冲流一次读写一个字符数组
	public static void method4(String srcString, String destString) throws IOException {
		long start = System.currentTimeMillis();

		FileReader fr = new FileReader(srcString);
		FileWriter fw = new FileWriter(destString);

		BufferedReader br = new BufferedReader(fr);
		BufferedWriter bw = new BufferedWriter(fw);

		char chs[] = new char[1024];
		int len = 0;
		while ((len = br.read(chs)) != -1) {
			bw.write(chs, 0, len);
		}

		bw.close();
		br.close();

		long end = System.currentTimeMillis();

		System.out.println("共耗时:" + (end - start) + "毫秒");
	}

	// 字符缓冲流一次读写一个字符串
	public static void method5(String srcString, String destString) throws IOException {
		long start = System.currentTimeMillis();

		FileReader fr = new FileReader(srcString);
		FileWriter fw = new FileWriter(destString);

		BufferedReader br = new BufferedReader(fr);
		BufferedWriter bw = new BufferedWriter(fw);

		String line = null;
		while ((line = br.readLine()) != null) {
			bw.write(line);
			bw.newLine();
			bw.flush();
		}

		bw.close();
		br.close();

		long end = System.currentTimeMillis();

		System.out.println("共耗时:" + (end - start) + "毫秒");
	}
}

要求:把ArrayList集合中的字符串数据存储到文本文件

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/*
 * 要求:把ArrayList集合中的字符串数据存储到文本文件
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源(创建集合对象)
		ArrayList<String> array = new ArrayList<String>();
		array.add("hello");
		array.add("world");
		array.add("java");

		// 封装目的地
		FileWriter fw = new FileWriter("E:\zikao\file\cs.txt");
		BufferedWriter bw = new BufferedWriter(fw);

		// 遍历集合
		for (String s : array) {
			// 写数据
			bw.write(s);
			bw.newLine();
			bw.flush();
		}

		// 释放资源
		bw.close();
		fw.close();
	}
}

要求:从文本文件中读取数据到集合中,并遍历集合

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

/*
 * 要求:从文本文件中读取数据到集合中,并遍历集合
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源
		FileReader fr = new FileReader("E:\zikao\file\cs.txt");
		BufferedReader br = new BufferedReader(fr);

		// 封装目的地
		ArrayList<String> array = new ArrayList<String>();

		// 读取数据存储得到集合中
		String line = null;
		while ((line = br.readLine()) != null) {
			array.add(line);
		}

		// 释放资源
		br.close();

		// 遍历集合
		for (String s : array) {
			System.out.println(s);
		}
	}
}

要求:一个文本文件中存储了多行,写一个程序实现随机访问一行

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

/*
 * 要求:一个文本文件中存储了多行,写一个程序实现随机访问一行
 * */

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源
		FileReader fr = new FileReader("E:\zikao\file\cs.txt");
		BufferedReader br = new BufferedReader(fr);

		// 封装目的地
		ArrayList<String> array = new ArrayList<String>();

		// 读取数据存储得到集合中
		String line = null;
		while ((line = br.readLine()) != null) {
			array.add(line);
		}

		// 释放资源
		br.close();

		// 随机产生一个索引
		Random r = new Random();
		int index = r.nextInt(array.size());

		// 根据索引值获取一个值
		String str = array.get(index);
		System.out.println(str);
	}
}

LineNumberReader获取当前的行号

import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

public class IntegerDemo {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("E:\zikao\file\cs.txt");

		LineNumberReader lnr = new LineNumberReader(fr);

		String line = null;
		while ((line = lnr.readLine()) != null) {
			System.out.println(lnr.getLineNumber() + ":" + line);
		}

		lnr.close();
	}
}

 

原文地址:https://www.cnblogs.com/denggelin/p/6337936.html