0

こんにちは私はLinuxのJavaコードから次のコマンドを実行しようとしました、ls> out.txt

これが私のコードです

try 
            { 
                Process p=Runtime.getRuntime().exec("ls > out.txt"); 
                p.waitFor(); 
                BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
                String line=reader.readLine(); 
                while(line!=null) 
                { 
                System.out.println(line); 
                line=reader.readLine(); 
                } 

            } 
            catch(IOException e1) {} 
            catch(InterruptedException e2) {} 

            System.out.println("Done"); 

出力ファイルが生成されていないことを確認しました。ただし、出力ファイル部分をそのままにしてlsコマンドを実行すると、エラーなしで正常に実行され、出力を確認できます。

4

2 に答える 2

1

>パイプ文字がシェル演算子であり、execがシェルで作成されていないためだと思います。

たぶんあなたがやろうとしていることはもっと複雑ですが、ディレクトリをリストするためにあなたはただファイルを使うことができます。次に、それらを繰り返し、PrintWriterを使用してファイルに保存できます。

File dir = new File("/some/path");
PrintWriter writer = new PrintWriter("output.txt");
for(File file : dir.listFiles()){
   writer.println(file.getPath());
}
writer.close();
于 2012-10-16T04:09:53.600 に答える
0

私がしたことは、特定のコマンドで新しいターミナルを開いたことです。このようにしてadb logcat、Androidのようにイベントの連続ストリームが出力されるコマンドを処理できます。私はこのチュートリアルに従ってそれをしました。Linuxユーザーはこれに似たものを見つけるでしょう。

于 2012-10-16T18:30:11.773 に答える