2017-12-06 4 views
0

異なるワークスペースに切り替えるときにそのうちの1つを使用すると、別の結果が得られます。ワークスペースの設定に問題がありますか?eclipseでは、 "c: "、 "c:"、2つのcディスク表現の違いは何ですか?

コード:

public static void function5() throws IOException { 
    File file = new File("c:"); 
    String[] strArr = file.list(); 
    System.out.println(strArr.length); 
    for (String str : strArr) { 
     System.out.println(str); 
    } 
} 
+0

あなたは、異なるオペレーティングシステム上でプログラムを実行しますか? – Anand

+0

いいえ、両方のウィンドウで –

+0

あなたはどんな結果を得ていますか? – Anand

答えて

0

すると以下のように、あなたのプログラムを実行してみてください。 "C:"(ファイルファイル=新しい

import java.io.File; 
    import java.io.IOException; 

    public class TP { 


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

    } 

    public static void function5() throws IOException { 

     File file = new File("c:\\"); 
     if(file.isDirectory()){ 
      System.out.println("It is a directory"); 
     } 
     System.out.println("Absolute path is " + file.getAbsolutePath()); 
     System.out.println("Canonical path is " + file.getCanonicalPath()); 
     System.out.println("File path is " + file.getPath()); 
     String[] strArr = file.list(); 
     System.out.println(strArr.length); 
     for(String str : strArr){ System.out.println(str); 

     } } 

    } 

はあなたが見つけるの場合は

1)ことファイル( "c:");)

絶対パスは現在のものですこのJavaプログラムをどこから実行しているのかを示します。以下の場合の駆動

2)

ワークスペースがCであるため、これは "C:\"(ファイルファイル=新しいファイル( "C:\");

絶対パスはC:ドライブです

ワークスペースがCにない場合:。。出力内容は同じになります

EDIT - canonical pathとabstract pathを追加しました.c:abstract pathはc:onlyであり、javaファイルの場所ではありません。

+0

しかし、同じディレクトリにあるワークスペース –

+0

がありますが、「c:」を使用するとそのうちの1つのみが私のcディスクを読み取ることができます –

+0

それは正しい用語を得るのに役立ちます。 "C:\"と "C:\ some \ folder"はともにC:ディスク*の*です。最初は*ルートフォルダ*にあります。今、問題は、 "C:"はC:ドライブ上のフォルダを指定していないということです。単にC:ドライブとその上の任意のフォルダを指定します。各ドライブには、独自の*作業ディレクトリ*(フォルダ)があります。 "C:"を指定すると、C:ドライブ上の作業ディレクトリを意味します。あなたの作業ディレクトリがどれかを判断する方法はいろいろあります。しかし、ルートフォルダを指定する方法は1つしかありません。これは "C:\"です。 – DodgyCodeException

関連する問題