0

在 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

但是没有任何改变,我仍然无法获得内容。

问题是什么?

4

1 回答 1

0

我认为这里的问题是 exec 命令如果你在这里查看关于 exec 的 ruby​​ 文档

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

希望有帮助

于 2012-10-23T10:02:38.747 回答