public class ReadFile {
    InputStreamReader read ;
    BufferedReader reader;
    public ReadFile(){
File file = new File("F:\\study java\\JAVA_CTY\\CTY\\note.txt");
  try{
read = new InputStreamReader (new FileInputStream(file),"UTF-8");
reader=new BufferedReader(read);
String line = null;
while ((line = reader.readLine()) != null) {
        System.out.println(line+"\ns.length:"+line.length());
}
/*String s;
FileInputStream readF = new FileInputStream(f);
           DataInputStream   file = new DataInputStream(readF);
         while( (s = file.readLine()) != null){
             System.out.println(s+"\nlength="+s.length());
         }*/
         read.close();
         reader.close();
}
catch(IOException e){
e.printStackTrace();
} }
}
/*************************************************************************/
工作台中输出的字符
/*************************************************************************/
?123
s.length:4
456
s.length:3
789
s.length:3
abc
s.length:3
def
s.length:3
ghi
s.length:3
jkm
s.length:3
?始淡彩た
s.length:5
しました
s.length:4
/*************************************************************************/
NOTE.TXT文件中内容是
/*************************************************************************/
123                                                                /*数字*/
456                                                                /*数字*/
789
abc
def
ghi
jkm                                                                /*英文*/
开始淡彩た                                                          /*中文*/
しました                                                            /*日文*/
/*************************************************************************/
问为什么在第一行的123前面有一个?由于我现在的环境是日文操作系统,中文显示也会有问题。
想要一个可以在多平台上都会正确读出数据的方法。谢谢

解决方案 »

  1.   

    去掉后显示的是这样
    ?サソ123
    s.length:6
    456
    s.length:3
    789
    s.length:3
    abc
    s.length:3
    def
    s.length:3
    ghi
    s.length:3
    jkm
    s.length:3
    蠑?蟋区キ。蠖ゥ縺?
    s.length:10
    縺励∪縺励◆
    s.length:6
      

  2.   

    啊,谢了楼上的三位,我昨天回家时又试了试,在家里的平台是中文系统JBuilder里是可以正确输出字符的,用System.out.println(line);后显示的只有第一行是?123,但我最终是把它放在JTable中的,在JTable里就显示的是123,中文,日文也可以正常显示。不知道为什么在公司的机器上就是这个东西,对了还有我在公司用的是日文系统Eclipse3.0,因为公司没有给控装软件的权限,所以只能用Eclipse了。本人现在在搞IBM/AS400上的RPG,因为一个朋友想做个东西,所以准备用JAVA实现,对JAVA也放了好长时间了,还有以前对读文件也不太熟。
      

  3.   

    是因为操作系统字符集的关系,使用用 FileReader 类好像可以避免
      

  4.   

    FileReader不太好用,刚刚试过,好像到现在为止还是加上UTF-8那个更接近理想状态,但还是有一点儿问题,就是在别的平台上怎么办,为什么显示出来乱七八糟的呢。