1

元々、クラスパスのjarにjava.io.Fileクラスがあり、separatorCharプロパティがありませんでした。そのため、次のコードブロックが実行される問題が発生しました。

import java.io.File;

public class HelloWorld {

    public static void main(String[] args) { 
        System.out.println("separatorChar= " + File.separatorChar); 
    } 
}

しかし、私は次のようにインポートステートメントを変更しました:

import java.io.*;

次に、基本的にFile.separatorCharが見つからないというエラーが表示されます。

import java.io. *は、クラスパスのjarにあるクラスを使用しているのに対し、import java.io.Fileは、特にJavaに付属しているFileクラスを使用しています。

ここでの問題は、java.io。Fileのインポートが機能するのにjava.io.*が機能しないのはなぜですか?

4

4 に答える 4

1

空のプロジェクトでは、コードはまだでコンパイルimport java.io.*されるため、別のクラスが使用されているようです。Eclipseを使用している場合は、のツールチップをチェックして、Fileそれがどのクラスであるかを確認できます。

または、

System.out.println(File.class.toString())

実行時にクラスを出力します。

于 2012-07-12T17:35:09.737 に答える
1

EJPが元の質問にコメントしたように、

それは正しいです。Import java.io. *は、現在のパッケージにないクラスを見つけるための別の場所をコンパイラーに提供します。Import java.io.Fileは、使用するファイルをコンパイラーに指示します。道徳:JDKクラス名を再利用しないでください。

于 2012-07-16T21:35:10.557 に答える
0

あなたはどこかで何か他のものを台無しにしたに違いありません。

コンパイルすると

import java.io.*;

public class HelloWorld {

    public static void main(String[] args) { 
        System.out.println("separatorChar= " + File.separatorChar); 
    } 
}

私は得る

c:\files\j>javac HelloWorld.java

c:\files\j>java HelloWorld
separatorChar= \
于 2012-07-12T17:33:16.053 に答える
-1

java.io.*を使用する場合; 表示されるのはファイルだけなので、File.seperatorCharの代わりに、separatorCharに到達するためのルートはio.file.separaterCharです。それは出発点がどこにあるかを扱います。これはファイルシステムのようなものです.../users / mattにいて、/ document / mytext.txtと入力した場合、フルパスはC:/users/matt/documents/mytext.txtです。ユーザーに戻る場合ファイルの場合、同じコマンド(/documents/mytext.txt)は、存在しないC:/users/documents/mytext.txtを検索します。お役に立てば幸いです。

于 2012-07-12T17:32:21.483 に答える