Java I/O 学习笔记(4) reader和writer

来源:互联网 发布:qq堂有mac 编辑:程序博客网 时间:2024/05/21 11:13
package files;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.CharArrayReader;import java.io.CharArrayWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.LineNumberReader;import java.io.OutputStreamWriter;import java.io.StreamTokenizer;import java.io.StringReader;import java.io.StringWriter;import java.util.Arrays;public class TestReaderWriter {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {testFileReaderWriter();testStreamAdapter();testStringReaderWriter();testCharArrayRW();testLineNumberRW();testStreamTokenizer();testBufferedReader();}/** * 读取中文会产生乱码,因为系统默认编码是GBK,而文件的格式是UTF-8。一种选择是 * 改变系统默认编码为UTF-8,另一种方法见testStreamAdapter() *  * @throws IOException */public static void testFileReaderWriter() throws IOException {char[] charBuffer = new char[100];BufferedReader br = new BufferedReader(new FileReader("./input.txt"));br.read(charBuffer);System.out.println(charBuffer);br.close();BufferedWriter bw = new BufferedWriter(new FileWriter("./output.txt"));bw.write("Hello world.");bw.close();}public static void testStreamAdapter() throws IOException {char[] charBuffer = new char[100];BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("./input.txt"), "UTF-8"));br.read(charBuffer);br.close();System.out.println(charBuffer);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("./output.txt"), "UTF-8"));bw.write("正则表达式。");bw.close();}public static void testStringReaderWriter() throws IOException {StringReader sr = new StringReader("正则表达式");char[] charBuffer = new char[2];while (-1 != sr.read(charBuffer)) {System.out.println(Arrays.toString(charBuffer));}StringWriter sw = new StringWriter();sw.write("正则表达式");sw.append("。");System.out.println(sw.toString());}public static void testCharArrayRW() throws IOException {char[] chars = new char[] { '正', '则', '表', '达', '式' };CharArrayReader car = new CharArrayReader(chars);char[] charBuffer = new char[2];while (-1 != car.read(charBuffer)) {System.out.println(Arrays.toString(charBuffer));}CharArrayWriter caw = new CharArrayWriter();caw.write("正则表达式");caw.append("。");System.out.println(caw.toString());}public static void testLineNumberRW() throws IOException {LineNumberReader lnr = new LineNumberReader(new StringReader("正则\r\n表达\r\n式"));char[] charBuffer = new char[2];while (-1 != lnr.read(charBuffer)) {System.out.println(Arrays.toString(charBuffer));System.out.println(lnr.getLineNumber());}}public static void testStreamTokenizer() throws IOException {StreamTokenizer sTokenizer = null;int wordCount = 0, numberCount = 0;sTokenizer = new StreamTokenizer(new FileReader("./input.txt"));while (sTokenizer.nextToken() != StreamTokenizer.TT_EOF) {if (sTokenizer.ttype == StreamTokenizer.TT_WORD) {wordCount++;System.out.println(sTokenizer.sval);} else if (sTokenizer.ttype == StreamTokenizer.TT_NUMBER) {numberCount++;System.out.println(sTokenizer.nval);}}System.out.println("Number of words in file: " + wordCount);System.out.println("Number of numbers in file: " + numberCount);}public static void testBufferedReader() throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s = null;while ((s = br.readLine()) != null && s.length() != 0) {System.out.println(s);}}}

0 0
原创粉丝点击