朱莉娅 - 写到文件的开头

sdg*_*wer 6 file-io writing julia

我一直在尝试开发一种算法,该算法在某些时候需要将结果写入文件的开头或结尾.

我正在尝试创建一种排序算法,它不会使用尽可能多的RAM,因为我要分类的文件对于我当前的规格来说太大了.因此,对于额外时间的成本,我想直接执行此操作而不是RAM.

我知道可以用这种方式在Julia中编写文件>

write(outfile,"A, B, C, D\n")
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到如何写它的开头.

谢谢您的帮助.

Rez*_*lan 7

s=open("test.txt", "a+");
write(s,"B");
write(s,"C");
position(s) # => 2
seekstart(s);
position(s) # => 0
write(s,"A"); # be careful you are overwriting B!
position(s) # => 1
close(s);
s=open("test.txt", "r");
read(s,Char) # => 'A'
read(s,Char) # => 'C' # we lost 'B'!
Run Code Online (Sandbox Code Playgroud)

所以如果你喜欢前置!东西到文件流,上面的解决方案不起作用.

cdata=readall(s);
seekstart(s);
write(s,prependdata);
write(s,cdata);
Run Code Online (Sandbox Code Playgroud)


Vin*_*ynd 5

您可以使用两个文件而不是一个,例如,当您使用两个堆栈实现 双端队列时

  • 要追加数据,请追加到第一个文件:它将存储数据的尾部。

  • 添加数据,请附加到第二个文件:它将存储数据的开头,但顺序相反。

  • 当您需要单个文件中的数据时(在算法结尾处可能仅一次),请反转第二个文件中的行并将它们连接起来。