6

私はちょうどJavaの本を読んで、練習用の小さなプログラムをいくつか作成していました。入力したパスに関する情報を取得するための小さなコードを作成しました。コードは次のとおりです。

String path = JOptionPane.showInputDialog("Enter Path to analyze");

File file =  new File(path);

if (file.exists())
{
    String result = "";
    if (file.isDirectory())
    {
        result += "Path is directory\n ";
        String [] resList = file.list();

        for (String s : resList)
        {
            result += s + ", ";
        }
    }
    if (file.isFile())
    {
        result += "Path is a file\n";
    }

    JOptionPane.showMessageDialog(null, result);

入力ダイアログで、と入力するC:と結果はbuild, build.xml, manifest.mf, nbproject, srcになりますが、C:/と入力すると、Cのディレクトリとファイルの完全なリストが表示されます。

そして奇妙なことに、それはDドライブと他のドライブでは起こりません(つまり、結果はD:/とD :で同じです)、何が起こっているのか説明してください。

更新 C#を使用したWPFでも同じことが起こります!

4

2 に答える 2

10

C:「ドライブで現在選択されているディレクトリ」を意味しC:ます。あなたの場合、それはおそらくアプリケーションが実行されているディレクトリです。

D:D:/ルートディレクトリの現在の作業ディレクトリであるため、あなたの場合と同じD:です。

于 2012-04-26T18:29:15.907 に答える
3

これは実際には Java に関する質問ではなく、windows/dos に関する質問です。

説明は、ドライブを切り替えるための古い dos コマンドに帰着します。

ドライブ文字の後にコロンを入力すると、DOS でドライブを変更するコマンドになります。したがって、C:作業ディレクトリが既に C ドライブにあるため、「コマンド」は何もしません。ネイティブ インターフェイスによって JRE に返される「ディレクトリ」は、パス「」、つまり作業ディレクトリを使用した場合と同じです。

一方、スラッシュを追加すると、C ドライブのルートへの適切なパスになります。したがって、ネイティブ インターフェイスによって JRE にこのディレクトリが与えられます。

dos コマンド (windows>run>cmd) に移動して入力するC:と、コマンドは受け入れられますが、その時点で別のドライブにいる場合を除き、ディレクトリは変更されないことがわかります。

それが役立つことを願っています。

于 2012-04-26T18:30:23.433 に答える