【发布时间】:2014-09-22 19:04:05
【问题描述】:
这听起来可能有点复杂,我会尽量简化我的要求。
我正在开发的程序可以使用JTextArea 读写文件。当文件相当大时,将数据从该文件读取到文本区域确实需要大量时间。例如,我有一个文件,目前有 40,000 行文本,每行大约 50 个字符;此外,有些行会换行。有很多文本,从该文件中读取所需的时间比我想要的要多得多。
目前,我正在使用标准读取方法,该方法利用了JTextArea 组件包含的BufferedReader 实例。我想做的是加载JTextArea,并在屏幕上加载一定数量的文本。屏幕外的其余文本在后台的单独线程中加载。
使用InputStream 并将每个字符写入数组然后将字符写入JTextArea 就足够了吗?还是应该有不同的方法?我正在尝试实现一种快速高效的读取方法。
【问题讨论】:
-
(FWIW:2MB 的文件对于今天的硬件来说不是很“大”——也就是说,它运行速度是否太慢?对于真正的大文件,有更好的方法。)
-
嗯,它实际上有 4.20 mb 大,但我同意。但是,加载时间仍然比我喜欢的要长。
-
使用 BufferedReader(包装 InputStream),顺序 IO 应该“几乎是即时的”。对加载 (IO) 和加载 (UI) 计时,看看哪个引入了不希望的延迟。
-
好吧,我明白了。我目前正在使用带有包装器 FileReader 的 BufferedReader。那么 InputStream 会更高效吗?
-
几乎可以肯定,问题不在于读取文件,而在于试图让 JTextArea 处理数据。您可以进行某种手动分页,只将数据的某个子集设置到 jtextarea 中。
标签: java swing file inputstream jtextarea