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 回答