3

端末コマンドを使用して、osx の ~\Library\ フォルダーを再表示する単純な Java プログラムを作成しようとしています。Java からシステム コマンドを実行するコードを調査した限りでは、Runtime.getRuntime().exec(); です。そして、私が調べたすべての場所にそのようにリストされています。

しかし、私のプログラムは動作しません。以下、主な方法。

public static void main(String[] args) throws IOException {

    String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};
    try {
        Runtime.getRuntime().exec(noHide);
        System.out.println("library unhidden");
    } catch (Exception e ) {
        e.printStackTrace();
    }
}

このプログラムは例外をスローせず、正常にコンパイルおよび実行されますが、Library フォルダーは再表示されません。cmd文字列を再フォーマットしても。以下の形式はどれも機能しません

String noHide = "chflags nohidden ~/Library";
String[] noHide = {"chflags", "nohidden","~/Library"};
String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};

スペースを削除すると、例外がスローされます (文字列配列オブジェクトではありません)。コマンド (chflags noHidden ~/Library) を osx ターミナルから問題なく実行できます。誰でも理由がわかりますか?

4

1 に答える 1

2

tryあなたが持っているとを使用する必要がcatchあります。ただし、次のmainようにする必要があります。

public static void main(String[] args) {
    String[] noHide = {"chflags", "nohidden","~/Library"};
    try {
        Runtime.getRuntime().exec(noHide);
    } 
    catch (Exception e) {
        }
    }

基本的に、必要ありませんthrows IOException。これは私にとってはうまくいったので、プログラムでまだうまくいかない場合は、何かをセットアップする方法に大きな問題がある可能性があります。

于 2012-08-13T17:48:17.690 に答える