如何读取大型文本文件-java
我正在制作一个游戏,但要安装它,它需要7zip来解压文件,所以我附带了7zip安装程序。我已经创建了一个JFrame,里面有一个JTextArea来输入,但是我不能让BufferedReader读取整个txt文件(它有57行,我想这主要是因为BufferedReader不是设计用来读取那么多行的。)你能帮我读取文件吗,这样我就可以将许可证添加到游戏中。 谢谢 杰克逊 编辑如何读取大型文本文件-java,java,text,7zip,Java,Text,7zip,我正在制作一个游戏,但要安装它,它需要7zip来解压文件,所以我附带了7zip安装程序。我已经创建了一个JFrame,里面有一个JTextArea来输入,但是我不能让BufferedReader读取整个txt文件(它有57行,我想这主要是因为BufferedReader不是设计用来读取那么多行的。)你能帮我读取文件吗,这样我就可以将许可证添加到游戏中。 谢谢 杰克逊 编辑 当你们付钱给一个不懂东西的新手时,我感到很受欢迎--只要从文件中读完整的文本就行了。将它存储到一个字符串变量中,然后将该值放
当你们付钱给一个不懂东西的新手时,我感到很受欢迎--只要从文件中读完整的文本就行了。将它存储到一个
字符串
变量中,然后将该值放入JTextArea
,因为在JVM内存中存储57行并没有那么大。我最近编写了一个程序,使用BufferedReader从gzip文件中读取11亿行
读取整个文件的最简单方法是使用
String text = FileUtils.readFileToString(new File("uncompressedfile.txt"));
或
或者如果使用gzip压缩(与7zip类似)
您可以通过两种方式完成:- 1> 使用扫描仪
void read() throws IOException {
StringBuilder text = new StringBuilder();
String NL = System.getProperty("line.separator");
Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding);
try {
while (scanner.hasNextLine()){
text.append(scanner.nextLine() + NL);
}
}
finally{
scanner.close();
}
log("Text read in: " + text);
}
2> 缓冲阅读器
static public String getContents(File aFile) {
StringBuilder contents = new StringBuilder();
try {
BufferedReader input = new BufferedReader(new FileReader(aFile));
try {
while (( line = input.readLine()) != null){
contents.append(line);
contents.append(System.getProperty("line.separator"));
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}
return contents.toString();
}
57行并不是那么大,bufferedreader已经被用来读取gb中的文件:)什么是“无法获取
bufferedreader
读取”呢?从什么时候起,57行是一个“大文本文件”?我使用了BufferedReader
阅读了数百万行。你声称它不是为阅读57而设计的,事实上是没有根据的。@EJP我能找到的唯一教程只教我如何阅读一行,而不是57试试这个:@Black_Sirrah239无关紧要。读57行,或者说一百万行,和读一行是一样的。有循环。如果代码合适,您甚至可以复制bufferedReader.readLine()57次,或者100万次。我从哪里导入FileUtils?这是Apache Common IO的一部分,谢谢。我下载了它,除了现在我得到了这个异常:java.nio.charset.UnsupportedCharsetException:7zip_license.txt你可以提供一个或两个参数。如果您提供两个参数,那么第二个参数必须是字符集(正如javadoc中所述),最简单的选项是只提供文件名(如上面的示例所示)。顺便说一句,指定像“UTF-8”这样的字符集被认为是最佳实践,但我会首先处理简单的大小写。我目前有'String ZipLicenseData=FileUtils.readFileToString(“7zip_license.txt”);'我无法解释为什么它不起作用
void read() throws IOException {
StringBuilder text = new StringBuilder();
String NL = System.getProperty("line.separator");
Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding);
try {
while (scanner.hasNextLine()){
text.append(scanner.nextLine() + NL);
}
}
finally{
scanner.close();
}
log("Text read in: " + text);
}
static public String getContents(File aFile) {
StringBuilder contents = new StringBuilder();
try {
BufferedReader input = new BufferedReader(new FileReader(aFile));
try {
while (( line = input.readLine()) != null){
contents.append(line);
contents.append(System.getProperty("line.separator"));
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}
return contents.toString();
}