int x; 
byte y[]=new byte[1024]; try 
{ File file=new File("文档.txt"); 
FileInputStream fileread=new FileInputStream(file); 
while((x=fileread.read(y,0,1024))!=-1) 
{ String s=new String(y); } } catch(IOException e) 

} 问题是: 为什么byte[]数组长度无论设成2,512,1024等都会出现一些乱码,好像文件文字越多,要设成的大小就要越大,请问要怎样设置才可以无论文件多大,都可以正确显示出文本全部内容啊? 还有请解释一下这个错误原因~ 请高手们来帮忙~

解决方案 »

  1.   

    FileInputStream 取出的是byte的,要读出文字,要转换成 字节,就是Reader
    使用readUTF来读取啊
      

  2.   

    读文件的时候用InputStream的read(byte[])方法,构造String的时候使用String的String(byte[],int,int)这个构造函数。
      

  3.   

    fileread.read(y,0,1024))中的1024作为读取文件长度,不可以定死!
    可以使用fileread.available()得到流的长度!用他取代1024这样应该就没有问题了!
    没时间试 ,你试试!
      

  4.   

    BufferedReader bufferedReader=new BufferedReader(new FileReader("FilePath"));
    String s;
    whlie((s=bufferedReader)!=null){
    System.out.println(s);
    }
    bufferedReader.close();
      

  5.   

    jdk1.5中有说明
    要读取指定编码的文件需要
    FileInputStream 和InputStreamReader(fis,charSet)
    来读取FileInputStream is meant for reading streams of raw bytes such as image data.
    按照原始字节读取
    说以说字符编码超过127就不对了(乱码)