2012-03-04 5 views
1

ディレクトリ内のすべてのmp3ファイルのリスト(アプレットのディレクトリにあるmusicというサブディレクトリ)を取得しようとしています。配列。Javaディレクトリにあるファイルを一覧表示する

すべてが動作しますが、上場プロセスが...それだけ

は、これは私のコード

JAVAで...ディレクトリではなく、他のものに非常に最初のmp3ファイルを返す:

import java.applet.Applet; 
import java.io.File; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class Main extends Applet { 
    private static final long serialVersionUID = 1L; 
    public void init() { 
     File[] lib = getFiles(new File((getCodeBase() + File.separator + "music").substring(6))); 
     for (File s:lib) { 
      if (s.getName().substring(s.getName().length() - 3).equalsIgnoreCase("mp3")) { 
       try {getAppletContext().showDocument(new URL("javascript:addSong('"+s.getName()+"')"));} 
       catch (MalformedURLException me) {} 
      } 
     } 
     try {getAppletContext().showDocument(new URL("javascript:init()"));} 
     catch (MalformedURLException me) {} 
    } 
    public File[] getFiles(File dir) { 
     return dir.listFiles(); 
    } 
} 

はJavaScript:

function addSong(s) { 
    // Adding to array 
    window.songs.push("music/" + s); 
    // Debug message 
    alert(s); 
} 

function init() { 
// Random code to initialze music player 
// getting and listing values from "songs" which got content form addSong() 
} 
+0

おそらくaddSongも表示されますか? – mplungjan

+0

javascriptが追加されました –

+3

このアプレットを提供するホスト以外のホストからこのアプレットを実行しようとしましたか? 'new File()'を使ってサーバー上のファイルにアクセスする方法はありません。 –

答えて

1

を使用している理由を私は得ることができないことを確認しコード:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class FileLister { 

    private List<File> getFileList(File startingDir) throws FileNotFoundException { 
     List<File> result = new ArrayList<File>(); 
     File[] filesAndDirs = startingDir.listFiles(); 
     List<File> filesDirs = Arrays.asList(filesAndDirs); 
     for (File file : filesDirs) { 
      result.add(file); 
      if (!file.isFile()) {    
       List<File> deeperList = getFileList(file); 
       result.addAll(deeperList); 
      } 
     } 

     return result; 
    } 

    public static void main(String[] args) throws FileNotFoundException { 
     for(File file : new FileLister().getFileList(new File("D:\\Music"))){ 
      if(file.getName().contains(".")) { 
       String extension = file.getName().substring(file.getName().lastIndexOf("."), file.getName().length()); 
       if(extension.equalsIgnoreCase(".mp3")) { 
        System.out.println(file.getName()); 
       } 
      } 
     } 
    } 
} 
+1

これはライブサーバーでは機能しません。 'File'オブジェクト***は常にクライアントファイルシステムを指します。 –

+0

@AndrewThompsonありがとうございます。それは私には分かりませんでした。私はそれに投票しました。とにかくサーバーのファイルをリストするには? –

+0

感謝のタパス!それは完璧に働いた。 –

0

、私は(日食に)あなたのコードを試してみましたが、それが正常に動作しますuは右ディレクトリ

内のファイルをパットとuは私がこの次ている指定されたディレクトリに(再帰的に)表示するには(.MP3拡張子を持つ)すべてのファイルを.substring(6)

+0

これはライブサーバーでは機能しません。 'File'オブジェクト***は常にクライアントファイルシステムを指します。 –

1

私はあなたのコードを少し変更しました。見てみな。これで問題は解決します:

import java.applet.Applet; 
import java.io.File; 
import java.io.FilenameFilter; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class Main extends Applet { 
    private static final long serialVersionUID = 1L; 

    @Override 
    public void init() { 
     File[] lib = getMP3Files("E:/Music/BollywoodMusic"); // pass your directory name here 
     for(File s:lib) { 
      try { getAppletContext().showDocument(new URL("javascript:addSong('"+s.getName()+"')")); } catch(MalformedURLException me) {} 
     } 

     try {getAppletContext().showDocument(new URL("javascript:init()"));} 
     catch (MalformedURLException me) {} 
    } 

    public static File[] getMP3Files(String directoryName) { 
     File directory = new File(directoryName); 
     return directory.listFiles(new FilenameFilter() { 
      public boolean accept(File directory, String fileName) { 
       return fileName.endsWith(".mp3"); } }); 
    } 

} 
関連する問題