ご提示のコードの延長で、あくまでjcifs.smb.*
クラス群を使ってsmbのアクセスをされたいのでのあれば、JCIFS - Java CIFS Client Library のリファレンスを確認しましょう。
SmbFile(JCIFS API)
ファイルコピーならjcifs.smb.SmbFile.copyTo
ですし、ファイル削除ならjcifs.smb.SmbFile.delete
が使えるはずです。実例としては同サイトにサンプルプログラムが豊富にあるのでそちらを参考にされるのが良いと思います。
Index of /src/examples
コピーならCopyTo.javaでしょうし、削除ならDelete.java です。
※ところでご提示のソースは正しく動作したものでしょうか? こちらで試したところでは
String path = "c:\test\javac_tt.txt"
のコードはエスケープ文字が正しくないのでコンパイルエラーとなり、更に
SmbFileInputStream sfis = new SmbFileInputStream(path);
はWindowsのPATH文字列は受け付けず、jcifs.smb.SmbException
例外が発生したのですが。。。
追記しました:2019-01-11 11:49
質問のタイトルとご提示のコードの内容、コメントから推察するに、少し混乱があるようです。
- Samba - Windowsのネットワークファイル共有を実現する、unix系OS上で動くプログラム(製品)の名前です。
通信プロトコルとしてSMB(Server Message Block)を使い、WindowsとUnix系OS間でファイル等の共有を行っています。
- JCIFS - SMBでWindowsファイル共有サービスを利用できるようCIFSの機能をサポートするJavaのライブラリです。
ですので、Windowsマシン間のファイル共有と言うことでしたらSambaはとりあえず関係ありません。
追記しました2:2019-01-11 12:50
SmbFile.copyTo
はリモートのファイル同士しかコピーできないので、コピー元やコピー先がローカルのファイルの場合は例えばFileInputStream
やFileOutputStrem
を使って自力でコピーする必要があるようです。ローカルのファイルをリモートにコピーする例を示します。コードはあえて冗長に書いてるところもありますのであくまで参考程度としてください。
Java
1private void copy3() {
2 //String localPath = "D:\project\src.txt";
3 // PATH区切り文字としてエスケープが必要な'\'ではなく、'/'でもOK
4 String localPath = "D:/project/src.txt";
5 String remotePath = "smb://user:password@192.168.11.101/temp/dest.txt";
6
7 try {
8 FileInputStream ifs = new FileInputStream(localPath);
9 SmbFile dst = new SmbFile(remotePath);
10 SmbFileOutputStream ofs = new SmbFileOutputStream(dst);
11
12 byte[] data = new byte[1024];
13 for (;;) {
14 int len = ifs.read(data);
15 if (len == -1) {
16 break;
17 }
18 ofs.write(data, 0, len);
19 }
20 ifs.close();
21 ofs.close();
22
23 } catch (Exception e) {
24 e.printStackTrace();
25 }
26}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/11 00:28
2019/01/11 02:25
2019/01/11 02:38
2019/01/11 02:52
2019/01/11 03:51
2019/01/11 05:02 編集
2019/01/11 05:07
2019/01/11 05:13
2019/01/11 12:54 編集