使用流读入字符,正确输出读入的字符.

/** *//**
* $Id:$
*
* Copyright 2005 easou, Inc. All Rights Reserved.
*/
package say;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;

/** *//**
*
* @author sai
*
*/
public class TestFile ...{

public static void main(String[] args) ...{
TestFile tt = new TestFile();
tt.testStreamBuffer();
tt.testCharBuffer();
}

/** *//**
* 读stream,不适合读双字节字符
*
*/
public void testStreamBuffer() ...{
BufferedOutputStream bo = new BufferedOutputStream(System.out);
try ...{
byte[] str = (new String("abcdefghijklmn")).getBytes();
ByteArrayInputStream ba = new ByteArrayInputStream(str);
// 可以读String
BufferedInputStream br = new BufferedInputStream(ba);
// 也可以读文件
// BufferedInputStream br=new BufferedInputStream(new
// FileInputStream("d:/hello.txt"));
byte[] by = new byte[10];
int num = 0;

while ((num = br.read(by)) != -1) ...{
System.out.write(by, 0, num);
System.out.println();
}
bo.close();
} catch (Exception io) ...{
io.printStackTrace();
}
}

/** *//**
* 读字符,中文
*
*/
public void testCharBuffer() ...{
try ...{
BufferedReader br = new BufferedReader(new StringReader(
"myNnameIs小白sai "));
char[] by = new char[10];
int num = 0;
// StringWriter sw=new StringWriter();
// 这里不知道怎么用StringWriter.输出到文件吧
FileWriter sw = new FileWriter("d:/hello.txt");
BufferedWriter bo = new BufferedWriter(sw);

while ((num = br.read(by)) != -1) ...{
bo.write(by, 0, num);
bo.write(" ");
bo.flush();
}
sw.close();
} catch (Exception io) ...{
io.printStackTrace();
}
}
}
本文通过两个示例介绍了 Java 中如何使用流进行字符读取:一是利用 BufferedInputStream 和 ByteArrayOutputStream 对字节流进行处理;二是通过 BufferedReader 和 BufferedWriter 来处理字符流,包括中文字符。
1060

被折叠的 条评论
为什么被折叠?



