使用JFileChooser只能获得txt的一部分。 JAVA

时间:2014-08-28 13:09:42

标签: java file text bufferedreader jfilechooser

我正在使用JFileChooser从txt获取文本,然后处理它。 但是当我打印它时,程序只恢复文本的一部分,比如文档末尾的20%。发生了什么事?

以下是代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import javax.swing.JFileChooser;

public class Reader{

public static void main(String args[]){

    File inFile;
    FileReader fr;
    BufferedReader bufReader;
    JFileChooser chooser;

    int reply;
    String doc = "";

    String line;
try{

    chooser = new JFileChooser();
    reply = chooser.showOpenDialog(null);
    doc = chooser.getCurrentDirectory().getPath() + System.getProperty("file.separator") +
            chooser.getSelectedFile().getName();
    inFile = new File(doc);
    fr = new FileReader(inFile);
    bufReader = new BufferedReader (fr);

    do{
        line = bufReader.readLine();
        if(line ==null )
            return;
        else{
                System.out.println(line);
        }
    } while(line!=null);

    bufReader.close();

}//end try
catch(Exception e)
{   System.out.println("error: "+e.getMessage());   }

}//main
}//end class reader

3 个答案:

答案 0 :(得分:0)

也许错误的文件夹,试试这个:

JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File inFile = chooser.getSelectedFile()
FileReader fr = new FileReader(inFile);
BufferedReader bufReader = new BufferedReader (fr);
String line = bufReader.readLine();
while(line!=null){
  System.out.println(line);
  line = bufReader.readLine();
}
bufReader.close();

答案 1 :(得分:0)

运行此类时,将完全打印文本文件。可能是你的控制台缓冲区根本不够大,因为你使用System.out来打印这些行?

答案 2 :(得分:0)

出现这种情况可能有几个原因。

通常在写入文件而不关闭文件时。然后仍然有些数据不会刷新到文件中。 (这不是这种情况。)

控制台也不是完全同步的,如果您突然退出应用程序,可能会丢失某些内容,但每次System.out.println都会刷新到输出。

但是,如果你使用System.setOut(yourOut),那么你又要负责冲洗/关闭。

最后,可能发生了错误。确保您不会丢失例外,例如空catch (Exception e) { }

一个错误可能是在MacOSX上使用默认操作系统编码的FileReader可能会尝试在某些特殊字符上读取UTF-8和hickup。不确定会发生什么。

最后一个错误可能是错误的目录和错误的文件版本。

 File inFile = chooser.getSelectedFile();

以上应该是所有需要的。