我正在使用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
答案 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();
以上应该是所有需要的。