2012-03-05 11 views
1

私は現在学校向けのプロジェクトに取り組んでいます。それはJavaベースで、Linux MintでEclipseを使って書いています。割り当てには、文String[] filenames = new java.io.File("icons).list();を使用してファイル名の配列を作成します。ファイルディレクトリを含むString配列を作成するには?

問題は私がこれと何をするか分からない、私はインターネットと私の教科書を検索して過去数時間を費やしたが役に立たない。それは別の方法である必要がありますか?

以下

は名前が実際のアイコンに後で変換する必要があります(プロジェクトはGUIで、マッチングゲームを作ることです)モデルで必要なコードのために私の推測ですが、私は私がいることを持っているかなり確信しています私はちょうど配列に鶏のファイルを取得するように見えることはできません!事前に

おかげで、

public String[] list() { 
    String[] fileNames = new java.io.File("icons").list(); 
    return fileNames; 
} 
+1

アイコンのある引用符の内側にディレクトリへのパスを入れてみてください。 –

+1

あなたの質問は何か分かりません。投稿したコードは、配列として "icons"ディレクトリにあるすべてのファイルの名前を返します。「個々のファイルの内容はどうやって読むのですか?」という質問はありますか? – jacobm

+0

もう何が質問ですか? –

答えて

1

Javaでは、Fileクラスは、ファイルシステム上の「既存の」ファイルを表す必要はありません。例:

File f = new File("some_unknown_unexisting_file.bob"); 
System.out.println(f.exists()); // most likely will print 'false' 

また、クラスはファイルを現在の作業ディレクトリから解決します。あなたは、あなたの場合は

System.out.println(new File(".").getAbsolutePath()); 

で、このディレクトリを得ることができれば、私はとFile[]配列取得を示唆している:フォルダではありませんFileオブジェクトの配列を返します

File[] files = new File("icons").listFiles(new FileFilter() { 
    @Override 
    public boolean accept(File f) { 
     return !f.isDirectory() && f.canRead(); 
    } 
}); 
for (File f : files) { 
    System.out.println(f.getAbsolutePath()); 
} 

をし、あなたは読書のために開くことができます(これは必ずしも真実ではありませんが、あなたの場合は問題ありません)。

しかし、もしあなたがlist()を使用するを持っている場合、これは同等です:

File parent = new File("icons"); 
String[] fileStr = parent.list(new FilenameFilter() { 
    @Override 
    public boolean accept(File dir, String name) { 
     File f = new File(dir, name); 
     return !f.isDirectory() && f.canRead(); 
    } 
}); 
for (String f : fileStr) { 
    System.out.println(new File(parent, f).getAbsolutePath()); 
} 

また、ファイル(String[])のリストで、あなたが使用してアイコンを作成することができます

String filename = fileStr[i]; // some file name within the array 
ImageIcon icon = new ImageIcon("icons" + File.separator + filename); 

またはあなたのファイルリスト(File[])であれば、クリーナーです。

File file = files[i]; // some file within the File[] array 
ImageIcon icon = new ImageIcon(file.getAbsolutePath()); 

幸運。

+0

これは間違いなくファイルの内容を理解するのに役立ちますが、基本的にはパスを含むStringへの参照ですか?それから私は実際にボタン上のアイコンを取得すると仮定、私はちょうど新しいImageIconを作る必要があります。しかし、私はまだファイル名を実際に読み取る方法についてはまだ不明ですが、getAbsolutePathは "/ home/daniel/workspace/Assignment3 /"というディレクトリを私に与えましたが、私はこれをLinux上で実行しています。 JCreatorを実行しているウィンドウがありそうです。 – DanBMan

+0

が 'FilenameFilter'の場合は+1、[' FileFilter'](http://docs.oracle.com/javase/7/docs/api/java/io/FileFilter.html)も参照してください。 –

+0

Eclipseを使用している場合、デフォルトパスはeclipseのプロジェクトパスです。したがって、これはデフォルトのプラットフォームに依存しない動作であるため、使用するOSに関係なく問題はありません。 'File'オブジェクトはパス名への参照ではなく、パスに関する情報を得るためのユーティリティのようなものです。新しい 'File'を作成しても、何も作成またはオープンされませんが、指定されたパス名を使用して実行できる一連の"操作 "が提供されます。 'JButton'は' Icon'を取るコンストラクタを持っていますので、新しいImageIconを作成し、それを 'JButton'コンストラクタに渡します。 –

0

は、あなたが書いたコードは大丈夫に見えます。 Javaが探しているところにフォルダ「アイコン」が存在していますか?

File f = new File("icons"); 
System.out.println("Does icons exist?" + f.exists()); 
System.out.println("Is it a dir?" + f.isDirectory()); 
System.out.println("How many files does it contain?" + f.list().length); 

幸運:

はこれを試してみてください!

0

私は同じ問題を抱えています。アイコンフォルダをsrcフォルダの直前のフォルダに移動しようとしたときに動作していたようです。私は、JCreatorで動作するように、私は割り当てを提出するときに私は何をするかわからない、私はそれが.javaファイルでなければならないと信じています。

関連する問題