0

Java は Windows クレデンシャルを使用できないようです。資格情報を必要とするサーバーからファイルをローカル フォルダーにコピーする必要があります。

「JCIFS」プラグインを使用して、SMB プロトコルを使用してサーバーからコピーしました。ただし、この場合、smb を使用してローカル マシンにしかコピーできないため、ローカル PC でいくつかのフォルダーを共有する必要があります。このような動作は、アプリケーションが異なる PC で実行されるため、受け入れられません。ネットワーク パスをドライブとしてマップし、「FileInputStream」でファイルをコピーするのも適切ではありません。

そのような問題はどのように解決できますか?ファイルをバッファに読み込んで、そこからローカル フォルダに読み込めるでしょうか。ファイルはそれに対して十分小さいです - 30-50Mb。

4

1 に答える 1

0

ああ、ストリームを使用する必要がありました:

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(credentials);
SmbFile remoteFile = new SmbFile (sourceFile, auth);
InputStream inputStreamFromLan = remoteFile.getInputStream();
OutputStream outputStreamToLocal = new FileOutputStream(outputFile);

              int bufferSize = 5096;

              byte[] b = new byte[bufferSize];
              int noOfBytes = 0;
                     while( (noOfBytes = inputStreamFromLan.read(b)) != -1 )
              {
                  outputStreamToLocal.write(b, 0, noOfBytes);
              }
              outputStreamToLocal.close();
              inputStreamFromLan.close();
于 2013-07-11T06:40:55.767 に答える