2

ディレクトリ内の .txt ファイルを一覧表示するメニューを作成する必要があります。たとえば、ディレクトリに jonsmith12.txt 、 lenovo123.txt 、 dell123.txt がある場合、次の arraylist メニューを作成するにはどうすればよいですか?

次のいずれかを選択してください。

  1. ジョンスミス12
  2. レノボ123
  3. dell123

選択肢を入力してください:

特定の時点でディレクトリ内にいくつの .txt ファイルがあるかわからないため、arraylist メニューが必要です。

import java.io.File;

public class ListFiles 
{

    public static void listRecord() {

  // Directory path here
  String path = "."; 

  String files;
  File folder = new File(path);
  File[] listOfFiles = folder.listFiles(); 

  for (int i = 0; i < listOfFiles.length; i++) 
  {

   if (listOfFiles[i].isFile()) 
   {
   files = listOfFiles[i].getName();
       if (files.endsWith(".txt") || files.endsWith(".TXT"))
       {
          System.out.println(files);
        }
     }
  }
}
}

.txt ファイルの情報をコンソールに表示するクラスを次に示します。まだ修正が必要ですが、おそらくそれを理解できるでしょう。

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * This program reads a text file line by line and print to the console. It uses
 * FileOutputStream to read the file.
 * 
 */
public class DisplayRec {

    public static void displayRecord() throws IOException {

    File file = new File("williamguo5.txt");
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;

    try {
      fis = new FileInputStream(file);

      // Here BufferedInputStream is added for fast reading.
      bis = new BufferedInputStream(fis);
      dis = new DataInputStream(bis);

      // dis.available() returns 0 if the file does not have more lines.
      while (dis.available() != 0) {

      // this statement reads the line from the file and print it to
        // the console.
        System.out.println(dis.readLine());
      }

      // dispose all the resources after using them.
      fis.close();
      bis.close();
      dis.close();

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

問題は、 .txtファイルが表示されるようにArrayListメニューをListFilesクラスに実装するにはどうすればよいかということです。

4

2 に答える 2

0

上記のこだわりはアレイのようです。ディレクトリ内のファイルを反復処理する必要がある場合は、次のような単純な方法でうまくいきます。

import java.io.File;


public class TxtEnumerator {
    public static void main(String[] args) {
        TxtEnumerator te = new TxtEnumerator();
        te.listFiles();
    }

    public void listFiles() {
        String filepath = "." + File.separator + "textDirectory";
        File file = new File(filepath);
        if (file.isDirectory()) {
            for (File f : file.listFiles()) {
                if (f.getName().endsWith(".txt")) {
                    System.out.println(f.getName());
                }
            }
        }
    }
}
于 2012-05-14T20:25:44.780 に答える