我正在制作一个游戏,但是要安装它,它需要 7zip 来解压缩文件,所以我已经包含了 7zip 安装程序。我创建了一个带有 JTextArea 的 JFrame 来输入7zip icense,但是我无法让 BufferedReader 读取整个 txt 文件(它的 57 行,我认为这主要是因为 Bufferedreader 不是为读取那么多行而设计的。)你能请帮我阅读文件,以便我可以将许可证添加到游戏中。谢谢,杰克逊
编辑当你们为不知道的事情付钱给新手时,我感到非常喜欢-_-
我正在制作一个游戏,但是要安装它,它需要 7zip 来解压缩文件,所以我已经包含了 7zip 安装程序。我创建了一个带有 JTextArea 的 JFrame 来输入7zip icense,但是我无法让 BufferedReader 读取整个 txt 文件(它的 57 行,我认为这主要是因为 Bufferedreader 不是为读取那么多行而设计的。)你能请帮我阅读文件,以便我可以将许可证添加到游戏中。谢谢,杰克逊
编辑当你们为不知道的事情付钱给新手时,我感到非常喜欢-_-
只需从文件中读取完整的文本。将它存储到一个String
变量中,然后将该值放入 中JTextArea
,因为 57 行存储在 JVM 的内存中并没有那么大。
我最近编写了一个程序,它使用 BufferedReader 从 gzip 文件中读取 11 亿行。
读取小至 57 行的整个文件的最简单方法是使用
String text = FileUtils.readFileToString(new File("uncompressedfile.txt"));
或者
String text = FileUtils.readFileToString(new File("uncompressedfile.txt"), "UTF-8");
或者如果使用 gzip 压缩(与 7zip 类似)
String text = IOUtils.toString(new GZipInputStream("compressedfile.txt.gz"));
你可以通过两种方式做到这一点: -
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>BufferredReader
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中的文件了:)