0

これを作成するのに役立つ、次のコードはフォルダー内の txt ファイルを検索し、その作成方法は拡張子のないファイルの名前を一覧表示します。コードは次のとおりです。

String list[] = new File("C:\\Users\\Eric\\Desktop\\txt\\").list(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return name.endsWith(".txt");
    }
});
for (int i = 0; i < list.length; i++){
    if(myName.equals(list[i])) {
        InputStreamReader reader  = null;
        try{
            File file =  new File("C:\\Users\\Eric\\Desktop\\txt\\" + list[i]);
            reader =  new InputStreamReader(new FileInputStream(file), "UTF-8");

ご覧のとおり、ここにあります:

if(myName.equals(list[i]))

これは、ファイルのリストが myname の値と比較されるため、比較シートと myName および list[i] を与えるのに役立ちますが、ファイル拡張子は考慮されていません) など、プログラムはフォルダーが次のレイアウトを持っていることを表示します。 indeks.html hi.html、ユーザーは indeks.html を入力しました。比較して良いですが、ユーザーがコードを入力し、プログラムがそれをディレクトリ内のファイルのリストと比較するように作成するにはどうすればよいですか?

4

1 に答える 1

3

私の理解が正しければ、拡張子に関係なく、フォルダー内のすべてのファイルを一覧表示する必要があります。この場合、次を使用します。

String list[] = new File("C:\\Users\\Eric\\Desktop\\txt\\").list(new FileFilter() {
    public boolean accept(File file) {
        return file.isFile();
    }
});

編集:わかりました、私はあなたを正しく理解していませんでした。if ステートメントでファイル名から拡張子を取り除きたいとします。substringと組み合わせて使用​​できますlastIndexOf

String name = list[i];
String nameWithoutExtension = name.substring(0, name.lastIndexOf("."));

または、すべての拡張子が「.txt」であるため、次も機能します。

String nameWithoutExtension = name.substring(0, name.lastIndexOf(".txt"));
于 2012-11-14T15:13:34.483 に答える