Java:如何使用凭据从网络复制到本地文件夹

时间:2013-07-09 07:29:42

标签: java fileinputstream file-copying jcifs

似乎Java无法使用Windows凭据。 我需要将需要凭据的服务器中的文件复制到本地文件夹。

我使用“JCIFS”插件使用SMB协议从服务器复制。 但在这种情况下,我也只能使用smb复制到本地机器,因此某些文件夹应该在本地PC上共享。这种行为对我的应用程序是不可接受的,因为它将在不同的PC上运行。 将网络路径映射为驱动器并通过“FileInputStream”复制文件也是不恰当的决定。

如何解决这个问题?也许文件可以读取缓冲区然后从那里到本地文件夹?文件足够小 - 30-50Mb。

1 个答案:

答案 0 :(得分: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();