-2

我正在制作一个游戏,但是要安装它,它需要 7zip 来解压缩文件,所以我已经包含了 7zip 安装程序。我创建了一个带有 JTextArea 的 JFrame 来输入7zip icense,但是我无法让 BufferedReader 读取整个 txt 文件(它的 57 行,我认为这主要是因为 Bufferedreader 不是为读取那么多行而设计的。)你能请帮我阅读文件,以便我可以将许可证添加到游戏中。谢谢,杰克逊

编辑当你们为不知道的事情付钱给新手时,我感到非常喜欢-_-

4

3 回答 3

1

只需从文件中读取完整的文本。将它存储到一个String变量中,然后将该值放入 中JTextArea,因为 57 行存储在 JVM 的内存中并没有那么大。

于 2012-05-13T12:33:40.683 回答
1

我最近编写了一个程序,它使用 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"));
于 2012-05-13T12:47:45.793 回答
0

你可以通过两种方式做到这一点: -

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中的文件了:)

于 2012-05-13T12:48:23.593 回答