Java - ファイル・システム


■ページ目次

Top

■ファイルシステムを操作する

■例題
  1. コマンドラインで指定したディレクトリ以下のすべてのディレクトリ、ファイルの名前と属性を再帰的にプリントするアプリケーション"FileList.java"を作成ください。
    1. import java.io.*;
    2. public class FileList {
    3. public static void main(String[] args) {
    4. FileList fl = new FileList();
    5. fl.listFiles(args[0]);
    6. }
    7. void listFiles(String fileName) {
    8. File d = new File(fileName);
    9. if (!d.isDirectory()) {
    10. System.out.println(fileName + " is not directory.");
    11. System.exit(1);
    12. }
    13. getSubDirectories(d, 0);
    14. }
    15. void getSubDirectories(File d, int nest) {
    16. printFileAttributes(d, nest);
    17. File[] filelist = d.listFiles();
    18. for (int i = 0; i < filelist.length; i++) {
    19. if (filelist[i].isDirectory()) {
    20. getSubDirectories(filelist[i], nest + 1);
    21. } else {
    22. printFileAttributes(filelist[i], nest + 1);
    23. }
    24. }
    25. }
    26. void printFileAttributes(File f, int nest) {
    27. for (int i = 0; i < nest; i++) {
    28. System.out.print("\t");
    29. }
    30. System.out.print("[");
    31. System.out.print(f.isDirectory()? "d": "f");
    32. System.out.print(f.canRead()? "r": "-");
    33. System.out.print(f.canWrite()? "w": "-");
    34. System.out.print("]");
    35. System.out.print(f.getName());
    36. System.out.println();
    37. }
    38. }

    □ 実行結果

    $ java FileList .
    [drw].
            [drw]1
                    [frw]FileCopy.java
            [drw]2
                    [frw]FileCopy.java
                    [frw]Stream01.java
        :
            [frw]Stream12.class
            [frw]Stream12.java
            [frw]Sysin.java
            [frw]Sysin2Sysout.class
            [frw]Sysin2Sysout.java
        
Top

inserted by FC2 system