2013-03-18 8 views
18

現在のディレクトリにファイルをリストしたいと思っています。私は動作するはずのものを作ったが、すべてのファイル名を返さない。現在のディレクトリにファイルをリストする方法は?

File dir = new File("."); 
File[] filesList = dir.listFiles(); 
for (File file : filesList) { 
    if (file.isFile()) { 
     System.out.println(file.getName()); 
    } 
} 

それは.classpathを返しますが、私は、このフォルダ内の他のJavaファイルを持っているかなり確信しています。たぶん現在のフォルダのドット表記が間違っていますか?あなたがnew File(".")は本当にあなたがそれを指していると思うところを指していることを確認する必要があり

+1

を使用してこの問題を回避するには、Windows によって作成されましたもっと確かめてください)。 –

+1

あなたのコードと出力に間違いはありません。 – Maroun

+0

Windowsの場合はdir、UNIXの場合はls -lのような比較ツールのリストを提供してください。 – Ingo

答えて

8

現在のフォルダのドット表記が正しくない可能性がありますか?

パスを確認するためにFile.getCanonicalFile()の結果を出力してください。

誰でも私の現在のフォルダではない理由を説明することはできますか?

IDEはJVMを呼び出すときにクラスパスを設定しています。

E.G. (Netbeansの場合)File |それはここに興味のあることWorking Directoryある

Netbeans project options

Project Properties (all classes)あなたは次のように何かが表示される場合があります。

1

から.classpathは、いくつかのEclipseプロジェクトのルートを提案している....

+11

* "あなたは.."とコメントしてください。 –

17

は、フォルダとサブフォルダ

内のすべてのファイルを取得するには、これを試してみてください
public static void main(String[]args) 
    { 
     File curDir = new File("."); 
     getAllFiles(curDir); 
    } 
    private static void getAllFiles(File curDir) { 

     File[] filesList = curDir.listFiles(); 
     for(File f : filesList){ 
      if(f.isDirectory()) 
       getAllFiles(f); 
      if(f.isFile()){ 
       System.out.println(f.getName()); 
      } 
     } 

    } 

は、ファイル/フォルダのみ

public static void main(String[]args) 
    { 
     File curDir = new File("."); 
     getAllFiles(curDir); 
    } 
    private static void getAllFiles(File curDir) { 

     File[] filesList = curDir.listFiles(); 
     for(File f : filesList){ 
      if(f.isDirectory()) 
       System.out.println(f.getName()); 
      if(f.isFile()){ 
       System.out.println(f.getName()); 
      } 
     } 

    } 
+0

私はここで、彼は '現在のディレクトリ'にあるすべてのファイルを印刷したいと言っていると思います。サブディレクトリにもありません!! –

+0

ありがとうございました... – saman

1

を取得するには、このいずれかの周りの迅速なスヌープを持っていたが、これは、SH、それのように見えますould work。私はまだそれをテストしていない。

File f = new File("."); // current directory 

    File[] files = f.listFiles(); 
    for (File file : files) { 
     if (file.isDirectory()) { 
      System.out.print("directory:"); 
     } else { 
      System.out.print("  file:"); 
     } 
     System.out.println(file.getCanonicalPath()); 
    } 
0

コードに問題はありません。指名されたディレクトリに直接含まれるすべてのファイルとディレクトリを一覧表示する必要があります。

問題が最も可能性の高い次のいずれかです。

  • "."ディレクトリは、あなたはそれがあることを期待するものではありません。 "."のパス名は、実際にはJVMの「現在のディレクトリ」または「作業ディレクトリ」を意味します。 を印刷して、実際にどのディレクトリにあるか確認できます。

  • あなたは何を誤解していますかdir.listFiles()が返します。ツリー内のすべてのオブジェクトを返しません。dirの下にあります。 で直接にあるオブジェクト(ファイル、ディレクトリ、シンボリックリンクなど)を返すのはdirです。

".classpath"ファイルには、Eclipseプロジェクトのディレクトリを見ている、とのEclipseプロジェクトが通常など"./src"などサブディレクトリ内のJavaファイルで構成されていることを示唆しています。 "."ディレクトリにJavaソースコードがないとは思いません。


srcが現在のフォルダではない、なぜ誰も私に説明できますか?」プロジェクトに現在のフォルダ、その後、あなたはEclipseでアプリケーションを起動していることをデフォルトを想定し

ランチャー設定ウィザードのいずれかのパネルでデフォルトの現在のディレクトリを変更することができます。

+0

私の他のコメントのrepost、 "私は問題を発見したかもしれないと思います。現在のディレクトリはsrcフォルダ(eclipse)にあると仮定しましたが、実際にドット表記はsrcの外のフォルダを指していますしかし、srcフォルダは私のファイルを保存するフォルダなので、現在のフォルダであると思っていました。 – Martynogea

0

コードをコンパイルしてスタンドアロンで実行すると、期待通りの結果が得られます。コマンドライン)。デフォルトで各プロジェクトのためのEclipseのように作業ディレクトリはプロジェクトディレクトリなので、あなたはこの結果を得ています。それは期待される結果が得られます

System.setProperty("user.dir", "absolute path of src folder"); 

あなたはとしてJavaではuser.dirプロパティを設定することができます。

+0

うーん...これは動作しません。純粋なJavaで 'new File("。 ")の意味を変更する方法はありません。 –

+0

リファレンス:http://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java –

0

この回答をローカルディレクトリ(たとえばE://)で使用しましたが、最初のディレクトリでは正常に動作し、secondeディレクトリでは出力がJava NULLポインタ例外になりました。隠しディレクトリで作成され、このディレクトリはちょうど私たちがすることができます(「私は、このフォルダ内の他のJavaファイルを持っているかなり確信している」*それらに名前を付け*この

public void recursiveSearch(File file) { 
File[] filesList = file.listFiles(); 
    for (File f : filesList) { 
     if (f.isDirectory() && !f.isHidden()) { 
      System.out.println("Directoy name is -------------->" + f.getName()); 
      recursiveSearch(f); 
     } 
     if(f.isFile()){ 
      System.out.println("File name is -------------->" + f.getName()); 
     } 
    } 
} 
関連する問題