プロジェクトは、写真、ファイルなどを保存する共有フォルダーなど、共有フォルダーにアクセスする必要があることがよくあります。したがって、Javaを使用してWindows共有フォルダーを読み書きする方法はありますか?
Javaは、JCIFSフレームワークを使用して、Windows共有フォルダーを読み書きできます。このフレームワークにより、ローカルフォルダーへのアクセスなどのリモートフォルダーにアクセスできます。
jcifs's URL:http://jcifs.samba.org/
JCIFSは、純粋なJavaを使用して開発されたオープンソースフレームワークで、SMBプロトコルを介してリモートフォルダーにアクセスします。このフレームワークは、Windows共有フォルダーとLinux共有フォルダーの両方をサポートしています。ただし、Linux共有フォルダーには、Sambaサービスソフトウェアのインストールが必要です(公式Webサイト:http://www.samba.org/)。
SMB(サーバーメッセージブロック)は、ローカルエリアネットワークでファイルとプリンターを共有するための通信プロトコルです。ローカルエリアネットワークの異なるコンピューター間でファイル、プリンター、その他のリソースの共有サービスを提供します。 SMBプロトコルは、クライアント/サーバープロトコルであり、クライアントはサーバー上の共有ファイルシステム、プリンター、その他のリソースにアクセスできます。 「TCP/IPを介してNetBios」を設定することにより、Sambaはローカルネットワークホストだけでなく、世界中のコンピューターとリソースを共有できます。
この記事では、主にJavaを使用してWindowsの共有フォルダーにアクセスする方法を学びます。
まず、Windowsマシンを見つけ、フォルダーを作成します:任意の場所で共有フォルダーを作成し、共有するように設定し、共有ユーザー名:共有、パスワード:管理者を設定します。
(Windows 7の下に共有フォルダーを設定する方法:Windows 7の下に共有フォルダーを設定する方法://www.vevb.com/os/windows/78034.html)
Windowsの共有フォルダーであろうとLinuxであろうと、Java SMBを使用して共有フォルダーにアクセスするためのコードは同じですが、WindowsとLinuxの共有フォルダー構成の方法は異なります。
テストコードは次のとおりです。
inputstream in = null; outputStream out = null; try {//画像ファイルを取得しますlocalfile = new file( "c:/testjpg"); string remotephotourl = "smb:// share:admin@11/sharedfolder/"; //写真を保存するための共有ディレクトリSimpledateFormat fmt = new SimpledateFormat( "yyyymmdhhmmsssss_"); smbfile remotefile = new SmbFile(Remotephotourl + "/" + fmtformat(new date()) + localfilegetname()); remotefileconnect(); // in = new BufferedInputStream(new FileInputStream(localFile))を接続してみてください。 out = new BufferedOutputStream(new SmbFileOutputStream(RemoteFile)); byte [] buffer = new byte [4096]; int len = 0; //長さを読み取ります((len = inread(buffer、0、bufferlength))!= -1){outwrite(buffer、0、len); } outflush(); // buffered buffered output stream} catch(例外e){string msg = "エラーが発生した:" + egetlocalizedmessage(); SystemOutPrintln(MSG); }最後に{try {if(out!= null){outclose(); } if(in!= null){inclose(); }} catch(例外e){}}上記のコードでは、JCIFSフレームワークによって提供されるSMBFileクラスが使用されます。このクラスは、Javaファイルクラスに似ています。このクラスのオブジェクトを使用すると、リモートファイルの読み取りと書き込みを処理できます。ファイルオブジェクトを使用してローカルファイルを読み取り、SMBFileオブジェクトを使用してリモートファイルに書き込みます。 SMBFileのConnect()メソッドは、リモートフォルダーに接続しようとします。アカウントまたはパスワードが間違っている場合、接続例外がスローされます。
リモートファイルをダウンロードするときは、smbfileオブジェクトを使用してリモートファイルを読み取ります。コードは次のとおりです。
inputstream in = null; bytearrayoutputStream out = null; try {//リモートファイルオブジェクト文字列remotephotourl = "smb:// share:admin@11/sharedfolder/testjpg"; smbfile remotefile = new smbfile(remotephotourl); remotefileconnect(); //接続してみてくださいout = new bytearrayoutputStream((int)remoteFileLength()); //ファイルコンテンツバイトを読み取る[] buffer = new byte [4096]; int len = 0; //長さを読み取ります((len = inread(buffer、0、bufferlength))!= -1){outwrite(buffer、0、len); } outflush(); //バッファーの出力ストリームをフラッシュして、return outtobytearray(); } catch(Exception e){string msg = "リモートファイルのダウンロードエラー:" + egetLocalizedMessage(); SystemOutPrintln(MSG); }最後に{try {if(out!= null){outclose(); } if(in!= null){inclose(); }} catch(例外e){}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。