Oct 08, 2005

JCIFS にチャレンジ

JCIFS とは

JCIFS は CIFS/SMB の Java 用ライブラリ。 要するに Java から Windows のファイルシステムにアクセスできる。

JCIFS
http://jcifs.samba.org/

JCIFS の実行環境構築

  1. JCIFS(jcifs-1.2.6.jar) をクラスパスに追加

サンプルコード

package jp.in_vitro.codelets.jcifs;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Date;
import java.util.Properties;

import jcifs.Config;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;

public class Codelet {

    public Codelet() {
        super();
    }

    public static void main(final String[] args) throws Exception {
        Codelet me = new Codelet();
        me.initializeJcifs();
        me.printFileList("smb://myclient/c$/");
        me.printFile("smb://myclient/SharedDocs/tmp.txt");
    }

    protected void initializeJcifs() {
        Config.setProperties(this.prepareSystemConfiguration());
    }

    protected Properties prepareSystemConfiguration() {

        Properties props = new Properties();

        props.setProperty("jcifs.netbios.wins", "192.168.1.1");
        props.setProperty("jcifs.smb.client.username", "myname");
        props.setProperty("jcifs.smb.client.password", "mypassword");

        return props;
    }

    public void printFileList(final String target)
            throws MalformedURLException, SmbException {

        SmbFile dir = new SmbFile(target);
        if (!dir.isDirectory()) {
            return;
        }

        SmbFile[] children = dir.listFiles();
        for (SmbFile child : children) {
            if (child.isDirectory()) {
                System.out.print("[DIR]");
            }
            System.out.print(" ");
            System.out.print("" + child.getCanonicalPath());
            System.out.print(" ");
            System.out.print("" + new Date(child.getDate()));
            System.out.println();
        }
    }

    public void printFile(final String target) throws IOException {

        SmbFileInputStream in = new SmbFileInputStream(target);
        int ch = 0;
        while ((ch = in.read()) >= 0) {
            System.out.print("" + (char) ch);
        }
    }
}

TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Library/20051008_01.trackback
Post a comment

writeback message: Ready to post a comment.