1

たとえば、ディレクトリ内のファイルとディレクトリの名前のリストがあります。

List<String> list = new ArrayList<Strings>(); /* list of files */

Linuxのコマンドlsのように印刷する必要があります。

a.txt file1.txt       filewithverylongname.txt Folder1
g.txt G_longfile2.txt h.txt                    i.txt

列の数はファイルの数に依存し、列のサイズは各ファイルの長さまたは同じ列のディレクトリ名に依存します。ファイルの数がわかっている場合は、このリンクで何かを使用し ますが、ファイルまたはディレクトリの数は可変である可能性があります。どうすればよいですか。

4

2 に答える 2

0

私はこれがあなたの要件を満たすと信じています:

import java.io.File;

public class Ls {

    private static final int NUM_COLUMNS = 3;
    private static final int SEPARATING_SPACE_LENGTH = 2;

    public static void main(String[] args) {
        File file = new File("C:/WINDOWS");
        if(file.isDirectory()) {
           File[] listFiles = file.listFiles();
           list(listFiles);
        }
    }

    private static void list(File[] files) {
        int[] maxLength = new int[NUM_COLUMNS];

        for (int i = 0; i < files.length; i++) {
            int fileLength  = files[i].getName().length();
            int columnIndex = i % NUM_COLUMNS; 

            if (maxLength[columnIndex] < fileLength) {
                maxLength[columnIndex] = fileLength;
            }   
        }

        for (int i = 0; i < files.length; i++) {
            String fileName = files[i].getName();
            System.out.print(fileName);
            for (int j = 0; j < maxLength[i % NUM_COLUMNS] - fileName.length() + SEPARATING_SPACE_LENGTH; j++) {
                System.out.print(" ");
            }

            if ((i + 1) % NUM_COLUMNS == 0) {
                System.out.print("\n");
            }
        }
    }

}

はっきりしない場合はお知らせください。

ありがとう、
EG

于 2013-02-07T06:50:39.943 に答える
0

フォルダ内のファイル数を取得するには

File file = new File("D:\\AnyFolder");
if(file.isDirectory()) {
   File[] listFiles = file.listFiles();
   System.out.println("Total files in folder : " + listFiles.length );
}
于 2012-12-02T12:59:41.543 に答える