mathematica的二进制文件读写就是这么弱
读1G数据要花1小时,没有同时读写打开文件方式,没有随机指针,不能只修改文件某一字节。 怎么玩的呢,可否分享一下过程,然后我才知道你为啥会得出这样的结论,:)原则上,读写文件的事情是跟编程语言无关的。
说写吧。简单的,怎么修改一个1K字节文件中的第100个字节?我查不到资料。
OpenWrite 打开一个输出到文件的流,清除该文件以前的内容
OpenAppend 打开一个输出到文件的流,向已有内容追加数据
读,type最大是128bit整数,比分128个字节快,一段1M数据用65536个UnsignedInteger128读。什么也不算,读了就丢,就是差不多1G1小时。
肯定不是硬件、系统问题。这台电脑看10G的蓝光片2小时没有问题。
我公司电脑没有安装Mathematica。 只能查看在线文档来了解。
1)关于大文件操作,一个字节一个字节的搞,即便是C语言也会很慢的。所有语言,大致思路就是获取流的句柄,然后按块操作。Mathematica里句柄就是 InputStream ,OutputStream
2)随机指针可以用 StreamPosition来取,用 SetStreamPosition来随机游走。
3)至于按块操作的函数API,好像本来就没多少可说的。比如读某一块存储区域的数据,用 ReadList,BinaryReadList 等,写一块内容可以看看PutAppend , WriteString函数是否满足。 总之,按块操作的函数都不会错了。
回头有时间了,我就验证一下。 我就是1M1M读就是 想办法搞块操作。InputStream和OutputStream是OpenRead、OpenWrite语句得到的句柄,受Open**的制约。
BinaryReadList是读1;;n之后顺便关闭流,
先写这些
页:
[1]