top / index / prev / next / target / source

2005-07-02 diary: Java: Jakarta Commons VFSを用いた ディレクトリ一覧を取得するサンプル , ファイルをコピーするサンプル

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

Java: Jakarta Commons VFSを用いた ディレクトリ一覧を取得するサンプル , ファイルをコピーするサンプル

Jakarta Commons VFSを用いた極めて初歩的なトイプログラムを作成しました。ファイルの一覧およびファイルのコピーです。VFSベースなので、ローカルファイルとftp, そしてhttpとが透過的に相互乗り入れできるのが非常に興味深いです。

Java: Jakarta Commons VFSを用いた ディレクトリ一覧を取得するサンプル

私がもっとも注目しているJava系オープンソースAPIのひとつが Jakarta Commons VFSです。さっそくとてもプリみぃてぃぶな検証プログラムを作成しました。

Jakarta Commons VFSを用いた ディレクトリ一覧を取得するためのトイプログラム・サンプルです。

確認に利用した動作環境

※これらファイルがクラスパスに含まれていない場合には 読解しにくい例外が発生する場合があります。 例外のサンプル「org.apache.commons.vfs.FileSystemException: Could not list the contents of "ftp://ftp.jp.ibm.com/" because it is not a folder.」 VfsListSample.java

/*
 * Jakarta Commons VSF: ファイル/ftp一覧の取得サンプル
 * Copyright (C) 2005 伊賀敏樹 作成日: 2005/07/02
 */

import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.FileType;
import org.apache.commons.vfs.VFS;

/**
 * @author Tosiki IGA
 */
public class VfsListSample {
    public static void main(String[] args) {
        try {
            FileSystemManager manager = VFS.getManager();
            FileObject fileObject = manager.resolveFile("file://c:/");
            // FileObject fileObject = manager.resolveFile("ftp://ftp.jp.ibm.com/");

            FileObject[] children = fileObject.getChildren();
            for (int index = 0; index < children.length; index++) {
                if (children[index].getType() == FileType.FOLDER) {
                    System.out.println("ディレクトリ:"
                            + children[index].getName().getURI());
                } else if (children[index].getType() == FileType.FILE) {
                    System.out.println("ファイル:"
                            + children[index].getName().getURI());
                } else if (children[index].getType() == FileType.IMAGINARY) {
                    System.out.println("イメージ:"
                            + children[index].getName().getURI());
                } else {
                    System.out.println("知らないファイル形式です: "
                            + children[index].getName().getURI() + ": "
                            + children[index].getType());
                }
            }
            fileObject.close();
        } catch (FileSystemException e) {
            e.printStackTrace();
        }
    }
}

関連するリソース

不明点 / TODO

関連する日記

Java: Jakarta Commons VFSを用いた ファイルをコピーするサンプル

Jakarta Commons VFSを用いた ファイルをコピーするためのトイプログラム・サンプルです。

確認に利用した動作環境

import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;

import org.apache.commons.vfs.FileObject; import org.apache.commons.vfs.FileSystemException; import org.apache.commons.vfs.FileSystemManager; import org.apache.commons.vfs.VFS;

/** * @author Tosiki IGA */ public class VfsCopySample { public static void main(String[] args) { InputStream inStream = null; OutputStream outStream = null; try { FileSystemManager manager = VFS.getManager(); FileObject fileObjectSrc = manager .resolveFile("http://homepage2.nifty.com/igat/igapyon/diary/index.html"); FileObject fileObjectDist = manager .resolveFile("file://c:/temp/work.txt");

        System.out.println("ソース[" + fileObjectSrc.getURL() + "]をターゲット["
                + fileObjectDist.getURL() + "]にコピーします.");

        if (fileObjectDist.exists()) {
            System.out.println("ターゲットのファイル[" + fileObjectDist.getURL()
                    + "]はすでに存在します.");
        }

        byte[] byteBuf = new byte[8192];
        inStream = fileObjectSrc.getContent().getInputStream();
        outStream = fileObjectDist.getContent().getOutputStream();
        for (;;) {
            int result = inStream.read(byteBuf, 0, byteBuf.length);
            if (result <= 0) {
                break;
            }
            outStream.write(byteBuf, 0, result);
        }
        outStream.flush();

        fileObjectSrc.close();
        fileObjectDist.close();
    } catch (FileSystemException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            inStream.close();
            outStream.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

} ```

世間のニュースから


この日記について