搜索
查看: 1324|回复: 6

string.save()最大只能保存4G大小的文件

[复制链接]

3

主题

51

帖子

312

积分

二级会员

Rank: 3Rank: 3

积分
312
发表于 2017-9-28 20:06:13 | 显示全部楼层 |阅读模式
  1. import console;
  2. import string.builder;

  3. console.setTitle("aardio工程");

  4. var str = string.builder(100 * 1024 * 1024);
  5. var s1 = string.random(1024 * 1024);
  6. for(i=1;5000;1){
  7.         str.append(s1);
  8.         if(!(i % 100)){
  9.                 console.log(i)
  10.                 string.save("\test.txt", str.subString(),true);
  11.                 str.free();
  12.                 str = string.builder(100 * 1024 * 1024);
  13.         }
  14. }
  15. str.free();
  16. console.log("结束");
  17. console.pause();
复制代码


不知道是我磁盘文件系统问题还是函数本身就最大支持4G,希望作者大大帮助点评
回复

使用道具 举报

12

主题

679

帖子

4008

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
4008
发表于 2017-9-28 21:53:29 | 显示全部楼层
NTFS(Windows):最大文件2TB
FAT32(Windows):最大文件4GB
回复

使用道具 举报

0

主题

23

帖子

116

积分

一级会员

Rank: 2

积分
116
发表于 2017-9-28 23:11:11 | 显示全部楼层
弱弱的问一下,不是作者可以回复吗?

写大文件用文件流,这个肯定可以把你硬盘写的撑到爆掉的:
var file = io.open("\test.bin","a+b");
while( true ){
    file.write(
"           " )
}

另外,楼主你的帖子即然是询问写文件的事,
其他跟你的问题无关的代码可以在发的时候整理一下,留下那句跟你的问题有关系的就可以了,例如:
while( true ){
    string.save(
"\test.bin", "           ",true )
}
毕竟论坛里的人都不是靠回答帖子吃饭,看帖子的时间有限。

回复

使用道具 举报

3

主题

51

帖子

312

积分

二级会员

Rank: 3Rank: 3

积分
312
 楼主| 发表于 2017-9-29 08:19:29 | 显示全部楼层
strong 发表于 2017-9-28 23:11
弱弱的问一下,不是作者可以回复吗?

写大文件用文件流,这个肯定可以把你硬盘写的撑到爆掉的:

发完整代码只是为了方便测试,你这代码写4G文件试过需要多久么。

可能我的问题不够清晰,主要想知道string.save是不是最大只能写4G
回复

使用道具 举报

0

主题

23

帖子

116

积分

一级会员

Rank: 2

积分
116
发表于 2017-9-29 11:19:25 | 显示全部楼层
幻月 发表于 2017-9-29 08:19
...可能我的问题不够清晰,主要想知道string.save是不是最大只能写4G
这个你已经测试验证出结果了吧?!任何函数都有上限,例如最大能创建多少线程??string.load最大能读多大的文件??界面上最多可以放多少控件??.........论坛好多这些帖子,可能每台电脑都不一样。只不过一般软件都不需要突破上限,象楼上说的FAT32文件系统的上限就是4GB。但实际很少有单文件过4GB,即使是几十个GB的游戏什么的,他们写数据文件也会分为多个,这样读进来的速度也快。

一定需要写4GB的文件,你可以用文件流,写起来也很方便。
回复

使用道具 举报

0

主题

23

帖子

116

积分

一级会员

Rank: 2

积分
116
发表于 2017-9-29 11:27:12 | 显示全部楼层
幻月 发表于 2017-9-29 08:19
...发完整代码只是为了方便测试,你这代码写4G文件试过需要多久么。


如果你要string.save测试的时候速度快一点也很简单,这么写就行了:
var buf = raw.buffer(100000000)
while( true )  string.save("\test.bin", buf,true )


的确 string.save 不适合写大文件,速度太慢。
而 io 文件流就快如闪电,建议你还是用 io 文件流来写大文件吧。
回复

使用道具 举报

3

主题

51

帖子

312

积分

二级会员

Rank: 3Rank: 3

积分
312
 楼主| 发表于 2017-9-29 19:19:49 | 显示全部楼层
strong 发表于 2017-9-29 11:27
如果你要string.save测试的时候速度快一点也很简单,这么写就行了:

恩,我就是想确认一下string.save是不是只能写4G,用其他办法可以我试过了,谢谢哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-11 19:22 , Processed in 0.078134 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表