字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
字节流处理单元为1个字节, 操作字节和字节数组。我将
“哈哈发达eeedfdagfr!@#$%^&*()_+”保存为unicode编码的data.txt文件,
分别用reader/writer和inputstream和outputstream来读写到两个txt文件中为什么reader/writer写入的有乱码,inputstream/outputstream写入的没有乱码将data.txt编码改成utf-8后,reader/writer和inputstream和outputstream写入文件,都没有乱码1:reader/writer都什么时候用
2:txt是文本文件,为什么用inputstream/outputstream也可以读写代码如下:
public class ReaderTest {
public static void readWrite1() throws Exception {
String filePath = "c:\\data.txt";
String out = "c:\\out1.txt";
File infile = new File(filePath);
File outfile = new File(out);
if(!outfile.exists()) {
outfile.createNewFile();
}
FileReader fileReader = new FileReader(infile);
FileWriter outWriter = new FileWriter(outfile);
while(true) {
int reader = fileReader.read();
if(reader == -1) {
break;
}
outWriter.write(reader);
}
outWriter.flush();
fileReader.close();
outWriter.close();
}
public static void inputStream1() throws Exception {
String filePath = "c:\\data.txt";
String out = "c:\\out2.txt";
File infile = new File(filePath);
File outfile = new File(out);
if(!outfile.exists()) {
outfile.createNewFile();
}
FileInputStream inputStream = new FileInputStream(infile);
FileOutputStream outStream = new FileOutputStream(outfile);
while(true) {
int oneByte = inputStream.read();
if(oneByte == -1) {
break;
}
outStream.write(oneByte);
}
inputStream.close();
outStream.close();
}
public static void main(String[] args) throws Exception {
readWrite1();
inputStream1();
}
}
java
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
字节流处理单元为1个字节, 操作字节和字节数组。我将
“哈哈发达eeedfdagfr!@#$%^&*()_+”保存为unicode编码的data.txt文件,
分别用reader/writer和inputstream和outputstream来读写到两个txt文件中为什么reader/writer写入的有乱码,inputstream/outputstream写入的没有乱码将data.txt编码改成utf-8后,reader/writer和inputstream和outputstream写入文件,都没有乱码1:reader/writer都什么时候用
2:txt是文本文件,为什么用inputstream/outputstream也可以读写代码如下:
public class ReaderTest {
public static void readWrite1() throws Exception {
String filePath = "c:\\data.txt";
String out = "c:\\out1.txt";
File infile = new File(filePath);
File outfile = new File(out);
if(!outfile.exists()) {
outfile.createNewFile();
}
FileReader fileReader = new FileReader(infile);
FileWriter outWriter = new FileWriter(outfile);
while(true) {
int reader = fileReader.read();
if(reader == -1) {
break;
}
outWriter.write(reader);
}
outWriter.flush();
fileReader.close();
outWriter.close();
}
public static void inputStream1() throws Exception {
String filePath = "c:\\data.txt";
String out = "c:\\out2.txt";
File infile = new File(filePath);
File outfile = new File(out);
if(!outfile.exists()) {
outfile.createNewFile();
}
FileInputStream inputStream = new FileInputStream(infile);
FileOutputStream outStream = new FileOutputStream(outfile);
while(true) {
int oneByte = inputStream.read();
if(oneByte == -1) {
break;
}
outStream.write(oneByte);
}
inputStream.close();
outStream.close();
}
public static void main(String[] args) throws Exception {
readWrite1();
inputStream1();
}
}
java
这地方不太懂,什么地方造成不同了?
data.txt是unicode编码,写入的也是unicode呀
本例中那个环节造成
不同的ENCODING/DECODING schema
本例中那个环节造成
不同的ENCODING/DECODING schema
当你声明 FileWriter outWriter = new FileWriter(outfile);的时候,用的是操作系统自定义的ENCODING (Cp1252)。 但是NOTEPAD UNICODE 是UTF-16 Little Endian (UTF-16LE)。 这里就产生了差别
本例中那个环节造成
不同的ENCODING/DECODING schema
当你声明 FileWriter outWriter = new FileWriter(outfile);的时候,用的是操作系统自定义的ENCODING (Cp1252)。 但是NOTEPAD UNICODE 是UTF-16 Little Endian (UTF-16LE)。 这里就产生了差别围观大神级回答!
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符
unicode字符就只能用字符流
搞不清楚,什么时候用字符流,实际应用中,基本用字节流
本例中那个环节造成
不同的ENCODING/DECODING schema
当你声明 FileWriter outWriter = new FileWriter(outfile);的时候,用的是操作系统自定义的ENCODING (Cp1252)。 但是NOTEPAD UNICODE 是UTF-16 Little Endian (UTF-16LE)。 这里就产生了差别
这些知识能够提供一个书或网址,参考下