我用了下面的程序往一个文件里写了数据,最后显示的是一对乱码,据了解是经过Unicode编码后得出的
import java.io.*;public class TestFileWriter{
public static void main(String[] args){
try{
FileWriter w= new FileWriter("d:/TestWriter.txt");
for(int c=0; c<=65535; c++){
w.write(c);
System.out.print(c+" ");
}
}catch(IOException e){
e.printStackTrace();
System.out.println("文件写入出错");
System.exit(-1);
}
}然后我用下面的程序把这个文件里面的内容读出来
import java.io.*;public class TestBufferStream{
public static void main(String[] args){
try{
FileInputStream fin=new FileInputStream("d:/java exercise/TestWriter.txt");
BufferedInputStream bin=new BufferedInputStream(fin);
int c;
System.out.println(bin.read());
System.out.println(bin.read());
bin.(320);
for(int i=0;i<10&&(c=bin.read())!=-1;i++){
System.out.print(c+" ");
}
System.out.println();
bin.reset();
for(int i=0;i<10&&(c=bin.read())!=-1;i++){
System.out.print(c+" ");
}
bin.close();
}catch(IOException e){e.printStackTrace();}
}
}int类型是32位,4个字节的,read()是读出一个字节,为什么最后显示的还是原来那个整数呢,不是应该只读出原来的整数的四分之一的字节么??
import java.io.*;public class TestFileWriter{
public static void main(String[] args){
try{
FileWriter w= new FileWriter("d:/TestWriter.txt");
for(int c=0; c<=65535; c++){
w.write(c);
System.out.print(c+" ");
}
}catch(IOException e){
e.printStackTrace();
System.out.println("文件写入出错");
System.exit(-1);
}
}然后我用下面的程序把这个文件里面的内容读出来
import java.io.*;public class TestBufferStream{
public static void main(String[] args){
try{
FileInputStream fin=new FileInputStream("d:/java exercise/TestWriter.txt");
BufferedInputStream bin=new BufferedInputStream(fin);
int c;
System.out.println(bin.read());
System.out.println(bin.read());
bin.(320);
for(int i=0;i<10&&(c=bin.read())!=-1;i++){
System.out.print(c+" ");
}
System.out.println();
bin.reset();
for(int i=0;i<10&&(c=bin.read())!=-1;i++){
System.out.print(c+" ");
}
bin.close();
}catch(IOException e){e.printStackTrace();}
}
}int类型是32位,4个字节的,read()是读出一个字节,为什么最后显示的还是原来那个整数呢,不是应该只读出原来的整数的四分之一的字节么??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货