3

深刻な問題があります

ランタイム インターフェイスで Java クラスを使用して Linux コマンドを実行したいのですが、"My Folder" などの名前のフォルダーを作成するコマンドがあります。

Unix コマンドを作成するには、mkdir My\ Folder または mkdir "My Folder" のいずれかを簡単に実行できます。

しかし、これをJavaで翻訳する方法は、次の2つのコマンドで試しました: Runtime.exec("mkdir My\ Folder") Runtime.exec("mkdir \"My Folder\"")

次に例を示します。

import java.io.IOException;
public class CreerDossier {
    public static void main(String[] args) throws IOException {
        Runtime runtime = Runtime.getRuntime();
        runtime.exec("mkdir My\\ Folder");
        runtime.exec("mkdir \"My Folder\"");
    }
}

しかし、まだ機能していません。

runtime.exec("mkdir My\ Folder") の場合、2 つのフォルダー My\ と Folder が作成されます runtime.exec("mkdir \"My Folder\"") の場合、2 つのフォルダー "My and Folder" も作成されます

解決策はありますか?

ありがとうございました !

4

3 に答える 3

4

そのためにははるかに使いやすいFile.mkdir()です

File dir = new File("My Folder");
dir.mkdir();
于 2013-02-16T23:09:44.750 に答える
2

他の回答では、ディレクトリ名にスペースを入れる方法を説明しています。私はあなたにこれをまったくしないように説得したいと思います.

慣例により、Linux のパス名にはスペースが含まれていません。ファイルシステムでこれが許可されていることを確認してください。しかし、これは Linux ユーザーの生活をぎこちなくします。

  • コマンド プロンプトからスペースを含むパス名を入力するときは、パス名を引用符で囲むか、スペースをエスケープする必要があります。

  • パス名が変数に格納されているシェル スクリプトを作成する場合、パス名にスペースが含まれている場合や含まれている可能性がある場合は注意が必要です。そうしないと、スクリプトが壊れる可能性があります。

これらを組み合わせると、スペースを含むきれいなディレクトリ名が実際には迷惑であることがわかります...またはさらに悪いことです.

私のアドバイスは、これを避けるためにシステムを再設計することです。システムのユーザーが最初に名前にスペースを入れることを許可しないか、(要件であるためこれをサポートする必要がある場合):

  • ファイル システム内の実際のパス名でスペース文字がスペースとして表されないように、URL スタイルのパーセント エンコーディングなどを使用してファイル名をエンコードします。
  • ユーザーが指定した名前をデータベースに保存します。
于 2013-02-16T23:45:36.120 に答える
1
runtime.exec(new String[] { "mkdir", "My Folder" });
于 2013-02-16T23:18:11.507 に答える