JCIFSを使ってみる(ファイルの読み込み)

JCIFS なる Java の SMB クライアントの実装があるということを知ったので、ちょっと使ってみました。

JCIFS

今回は読み込みのサンプルを。

■ JCIFSTest.java

package com.example.jcifs;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.UnknownHostException;

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

public class JCIFSTest {

	public static void main(String[] args) {
		String url = "smb://<username>:<password>@<'PC name' or 'IP address'>/<sharename>/test.txt";
		String content = JCIFSTest.getFileContent(url);
		System.out.println(content);
	}

	private static String getFileContent(String url) {
		SmbFileInputStream in = null;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		try {
			SmbFile sf = new SmbFile(url);
			in = new SmbFileInputStream(sf);
			
			byte[] buf = new byte[1024];
			int n;
			while((n = in.read(buf)) > 0) {
				baos.write(buf, 0, n);
			}
		} catch (MalformedURLException | UnknownHostException | SmbException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if(in != null)
				in.close();
			} catch (IOException e) {
			}
		}
		return baos.toString();
	}
}

※ 事前に適用なフォルダを作って、そのフォルダに共有の設定をしておいてください。手順的にはフォルダの右クリックから [共有]タブ - [詳細な共有] - [このフォルダーを共有する]にチェック、[アクセス許可] からユーザを追加。
※ username、password は上記で追加したユーザとパスワード。
※ sharename は「詳細な共有」ダイアログの [共有名] に指定したもの。


無事アクセスできて実行されれば、コンソールに text.txt の内容が表示されるはずです。

簡単ですが、以上になります。

* JCIFS のサンプル
Index of /src/examples
* APIドキュメント
JCIFS API


[環境情報]
Windows 10
Java SE 8 Update 92
JCIFS 1.3.18