工作中遇到的一个问题,需要读入文本文件并处理其中的字符。我先想当然想到了Scanner,用以下方法:
Scanner sca=Scanner(file);
while(sca.hasNextLine())
{
String line=sca.nextLine();
...
}
逐行读入字符,但发现什么都没读到,line是null,但原文件中的确是有文本的。因为我们的工作环境是日语,所以我想到可能是编码的问题,将待处理文件内容换为英文,一切正常,line顺利读入数据。后来尝试了下Scanner(file,“utf-8”),依然不行。
最后用BufferedFile解决,代码如下:
FileReader fr=new FileReader(file);
BufferedFile bf=new BufferedFile(fr);
while(bf.hasNextLine())
{
String line=bf.nextLine();
...
}
虽然解决了,但不知道为何,发出来大家讨论一下,第一次发帖,没多少分,见谅。

解决方案 »

  1.   

    通常我们都会这样读取FileReader fr=new FileReader(file);
    BufferedReader bf=new BufferedReader(fr);
    String str=null;
    while((str=bf.readLine())!=null)
    {
    System.out.println(str);
    }不过使用Scanner传Reader比较好 File file=new File("路径");
    FileReader fr = new FileReader(file);
    Scanner sca=new Scanner(fr);
    while(sca.hasNext())
    {
               System.out.println(sca.nextLine());
    }
      

  2.   

    我主要是想知道Scanner在处理中文或日语这种非字母语言的时候需要怎么做
      

  3.   

    从2楼的说法来看似乎是将scanner的源直接设定为File的问题?需要用FileReader过渡?有空我验证一下。
      

  4.   

    确实直接使用File出错。
    使用 new Scanner(new FileInputStream(file),"GBK")正常。