在ruby中我想执行一些生成文件的本地命令,然后我想读取文件的内容,然后修改它。
但是我总是得到空。
这是代码:
exec "java -jar xx.jar --output main.txt";
content=IO.read('main.txt');
content="somethinkg:"+content;
File.open('main.txt','w') do |f|
f.puts content
end
生成了main.txt,但我无法修改内容。
然后我认为它可能是由线程引起的,当正在读取main.txt
时,java命令未完成,因此内容为空。
然后我尝试了这个:
t=Thread.new do
exec "java -jar xx.jar --output main.txt";
end
t.join
content=IO.read('main.txt');
puts content
content="somethinkg:"+content;
File.open('main.txt','w') do |f|
f.puts content
end
然而没有任何改变,我仍然无法获得内容。
有什么问题?
答案 0 :(得分:0)
我认为这里的问题是exec命令如果你检查exec上的ruby文档 超过here
exec之后的代码永远不会执行
所以
t=Thread.new do
exec "java -jar xx.jar --output main.txt";
end
所以你的代码在此之后永远不会运行任何东西
尝试使用系统或反引号命令
类似这样的事情
t=Thread.new do
system "java -jar xx.jar --output main.txt";
end
t.join
content=IO.read('main.txt');
puts content
content="somethinkg:"+content;
File.open('main.txt','w') do |f|
f.puts content
end
希望有所帮助