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を用いた ディレクトリ一覧を取得するためのトイプログラム・サンプルです。

確認に利用した動作環境

/*
 * 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を用いた ファイルをコピーするためのトイプログラム・サンプルです。

確認に利用した動作環境

/*
 * Jakarta Commons VSF: ファイルコピーのサンプル
 * Copyright (C) 2005 伊賀敏樹 作成日: 2005/07/02
 */

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();
            }
        }
    }
}

世間のニュースから


この日記について