我在this教程中看到了以下声明。
而InputStream一次返回一个字节,表示一个值 在0到255之间(如果流没有更多数据,则为-1),Reader 一次返回一个char,表示0到65535之间的值(或-1) 如果流没有更多数据)。
以下是示例代码 -
Reader reader = new FileReader("c:\\data\\myfile.txt");
int data = reader.read();
while(data != -1){
char dataChar = (char) data;
data = reader.read();
}
InputStream的代码也类似。而不是FileReader& Reader;使用FileInputStream和InputStream。 Reader返回char,而InputStream流返回一个字节。在这两种情况下,当我使用诸如" Hello World"之类的字符串进行测试时,它一次读取一个字符。什么是超过255的值,我可以用它来查看这些基于字节和基于字符的输入之间的差异。
工作计划
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class ReaderStream {
public static void main(String[] args) {
String data = "படிகஅமைப்பு";
InputStream input = new ByteArrayInputStream(data.getBytes());
Reader inputStream = new InputStreamReader(input);
try {
int readData = inputStream.read();
while(readData != -1) {
System.out.print((char)readData);
readData = inputStream.read();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("");
input = new ByteArrayInputStream(data.getBytes());
try {
int readData = input.read();
while(readData != -1) {
System.out.print((char)readData);
readData = input.read();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出
படிகஅமைப்பு
பà®à®¿à®à®à®®à¯à®ªà¯à®ªà¯
答案 0 :(得分:3)
基本多语言平面中的任何Unicode字符都不在ASCII集中。就个人而言,我喜欢U + 0B87இ(来自泰米尔语),或生物危害符号U + 2623☣。确保您打开的文件以Unicode编码保存(UTF-8通常是最佳选择,尽管Java在内部使用UTF-16)。