高分帖:一个2G的文本文件,如何实现所有内容的完全颠倒?

Devidzhang 2006-09-25 03:15:31
一个2G的文本文件,要求不使用中间临时文件,如何实现所有内容的完全颠倒?(行也颠倒过来,每行字符都颠倒过来)

比如文件内容如下:

abcde
12345
你们好

实现内容完全颠倒后:

好们你
54321
edcba

不使用中间文件,就是说只能在内存中读写该文件,但是文件有2G,超过一般内存。如何实现之?请使用Java或C++解答。谢谢!
...全文
2567 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
beikexp 2006-09-28
  • 打赏
  • 举报
回复
linux 下如何搞?
simon11111122222 2006-09-28
  • 打赏
  • 举报
回复
标记一下
wxwx110 2006-09-27
  • 打赏
  • 举报
回复
严重同意把显示器倒 过来
Richard_Hong 2006-09-27
  • 打赏
  • 举报
回复
嗯,不错,好题
ystruggle 2006-09-27
  • 打赏
  • 举报
回复
能不能在文件的一行上作文章,
读一行,推一行/
菜鸟想滴
ziseshatan 2006-09-27
  • 打赏
  • 举报
回复
学习了
flushtime 2006-09-27
  • 打赏
  • 举报
回复
我晕,楼主去看看Thinking Java中的IO部分吧。
里面的 内存映射文件 就可以满足楼主的要求。
Devidzhang 2006-09-26
  • 打赏
  • 举报
回复
这个的确要用到内存映射文件来处理,在《windows核心编程》里面找到答案了。凡是提到这个的都可以得分。

比较遗憾的是我说了那么多,很多朋友没有看懂题目就开始回答问题,呵呵,希望大家都有所提高。
msn365 2006-09-26
  • 打赏
  • 举报
回复
1.4新增的NEWIO里面有操作大文件的类,比如RandomAccessFile,建议楼主看看文档应该不能解决
quicklight 2006-09-26
  • 打赏
  • 举报
回复
我觉得可以在内存当中设置两个同样大小的缓冲区,比如是16k,第一次从开头读取一页,并颠倒,然后从结尾读取一页并颠倒,然后将颠倒好的开头一页写入结尾,并从结尾往上移动一页在读取并颠倒一页,之后跳转到开头,每次都是读取一页,并写入前一页,这样文件当中跳转的次数会降低一些,性能会好些
唐竹 2006-09-26
  • 打赏
  • 举报
回复
写个专门读文件的底层系统
凡是读这个文件的
就倒着读
......
可能最快了吧
flyingbird110 2006-09-26
  • 打赏
  • 举报
回复
本人 的 想法和gongzhy(2369) 的相同
kingofworl 2006-09-26
  • 打赏
  • 举报
回复
(*_*)
leopard7 2006-09-26
  • 打赏
  • 举报
回复
开2个线程,第一个线程从文件头读取buf个字符,然后对buf做颠倒,这个楼主已经实现,颠倒完成后往文件尾前buf个字符的地方开始写。另一个线程从文件尾读取buf个字符,然后颠倒,颠倒完成写文件头。这个要注意的是线程同步问题,在线程1/2未完成字符读取的时候,线程2/1不能写文件。就这两个线程交替,直到转换完
joy1982109 2006-09-26
  • 打赏
  • 举报
回复
新建个临时文件,用RandomAccessFile直接seek到文件尾,按行写倒临时文件,倒读完后,删除此文件,把临时文件改名为此文件
------------------------
要求不使用临时文件的
要不然谁都会了
gongzhy 2006-09-26
  • 打赏
  • 举报
回复
新建个临时文件,用RandomAccessFile直接seek到文件尾,按行写倒临时文件,倒读完后,删除此文件,把临时文件改名为此文件
endisoft 2006-09-26
  • 打赏
  • 举报
回复
啊,my god,2G
还没试过能不能打开
估计倒成了,也不知道有没有成功
wood542344 2006-09-26
  • 打赏
  • 举报
回复
把显示器倒过来是个逆天级的好办法
射天狼 2006-09-26
  • 打赏
  • 举报
回复
建议用内存映射文件,否则这么大的文本文件,根本打不开!

═══════════════════
 免费的源码、工具网站,欢迎大家访问!
 http://www.j2soft.cn/
═══════════════════
jason1019 2006-09-26
  • 打赏
  • 举报
回复
把显示器倒过来不就得了...^_^
加载更多回复(29)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧