最近项目中遇到了用JEditorPane显示大文件(100M以上)的问题,我有两个解决方案:
1、用线程分段读取,分段插入,但这个方法要试用Document的insertString()方法,当读到后面时,内存会溢出。
2、用滚动条来控制分页显示文件内容,这种效果最好,但由于用的内存映射,会把一行的内容分到两页去显示。数据完整性得不到保障。
请问各位大大有什么解决方案,或有这方面的经验提出来分享一下,谢谢了~~!
1、用线程分段读取,分段插入,但这个方法要试用Document的insertString()方法,当读到后面时,内存会溢出。
2、用滚动条来控制分页显示文件内容,这种效果最好,但由于用的内存映射,会把一行的内容分到两页去显示。数据完整性得不到保障。
请问各位大大有什么解决方案,或有这方面的经验提出来分享一下,谢谢了~~!
或者用内存映射----刚从c++转过来,不知道Java里有没这个
你开启一个线程读取文本,此刻可以在窗口弹出一个waitDialog,等到读取文本结束。关闭waitDialog。显示。
以前做过,稍微长时间的操作都是这么进行的。
通过nio读取大本文。效果应该比较好些。
需要对整修文件操作,那就要加大内存防止溢出了吧。如果操作的不是内容或者不是需要全部内容,可以把大的内容做成hashmap保存到另一个文件。减小内存占用
开发过大文件编辑器的大大也来给点建议啊。
我以为像复杂xml那样结构复杂,看来结构不太复杂,就是内容大。就用分页做吧,修改的只是显示的部分,内存映射也会溢出吗?注意垃圾回收。多加几个大括号让不用的数据过期。
滚动条控制是什么意思?全部加载到内存吗?应该只给用户显示一页的视图吧。
更何况楼主还要编辑文本的格式,关注一下。
这种设计是正确的,现在就是考虑读出来按行分,格式不变的问题啦
,如果你一屏显示的数据是可计算的,那就用这个方法把部分数据先读到char[]中,然后构造出字符串显示。JEditorPane上用滚动条或者分页来设定off和len的值
,如果你一屏显示的数据是可计算的,那就用这个方法把部分数据先读到char[]中,然后构造出字符串显示。JEditorPane上用滚动条或者分页来设定off和len的值