锁定老帖子 主题:java开发大文件编辑器的解决方案
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-14
不知各位在这方面有什么好的建议,求经验分享~~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-14
可以试试以滚动的方式来显示分页,
|
|
返回顶楼 | |
发表时间:2010-07-15
可以这样做:
用取字节是没错的。 现在假设一页最多可以容纳50行。 比如说,滚动条取到5% 那么就取文件第5%的地方。 然后抛弃掉第一个换行之前的内容,往后取50行内容。 将这个内容显示在页面上,因为一行可能很长,会有多的行,那就不显示。 这时候还要处理:上一行、下一行、上一页、下一页。 所以之前的字节偏移是需要保存下来的。 |
|
返回顶楼 | |
发表时间:2010-07-15
这个你其实可以看下手机上java写的电子书阅读软件是怎么做的,譬如anyview
|
|
返回顶楼 | |
发表时间:2010-07-15
如果是文本文件,按行分割的话,几个思路:
1、按字体和显示区域,如果有自动换行和不换行,measure大小和长宽。 2、如果临时文件对用户屏蔽,修改时,可以使用多个临时文件分片,或是记录操作日志。保存时再统一处理到原始文件。 3、每次操作都尽量只修改影响的上下几行,像eclipse的editor那样。 4、win32 api里提供了直接读取文本文件第几行的快速方法,好像java没有,如果能用jni/jawin/jacob,试一试。 。。。。。。 |
|
返回顶楼 | |
发表时间:2010-07-15
感谢楼上的回答,我觉得现在最大的问题就是按数据行分页,kimmking 说的第四个思路值得考虑,因为我自己做了几个按行分页的方法,性能都太差了(1、给每行行创建索引,2、自己实现读取文件的固定行)。seek()方法却只能定位的字节。我看了下别人用C#实现的大文件编辑器,是按行分块。我对C不是很熟悉,不知道Java代码调用C代码会有哪些问题。。。这个方案实现的难度有多大?
|
|
返回顶楼 | |
发表时间:2010-07-15
你可以先参考下诸如vim开源项目如何处理的,这些读取大文件也是比较快的。
|
|
返回顶楼 | |
发表时间:2010-07-15
其实直接采用按字节分页编辑不是更好?
我想大多数文本编辑器都会是这样的,而不是按行分页吧! |
|
返回顶楼 | |
发表时间:2010-07-15
xdsnet 写道 其实直接采用按字节分页编辑不是更好? 我想大多数文本编辑器都会是这样的,而不是按行分页吧! 我一开始做的就是按字节分页``但在实际中滚动条不好控制每次滚动显示文字的量, 可能是我考虑的不周全。我了解过几个C#的项目,他们采用的是按行数分块,这样可以固定显示文件的行。。所以我才想到按行分页`` |
|
返回顶楼 | |
发表时间:2010-07-16
问题是行的定义也是不确定的啊,对行如何显示也是不确定的,这也影响了用滚动条控制的效果。
当然,你可以考虑用行控制,实际上我也不确定诸如vim是用的那种控制(不过在vim中是可以没有滚动条的:-) ),由你这么一说,我还觉得还真的可能是用的行分页呢! |
|
返回顶楼 | |