0

ruby では、ファイルを生成するローカル コマンドを実行し、ファイルの内容を読み取って変更したいと考えています。

しかし、私は常にnullになります。

これはコードです:

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 に答える