2013-07-09 35 views
0

看来,Java不能使用Windows凭据。 我需要将文件从需要凭据的服务器复制到本地文件夹。Java:如何从网络使用凭据复制到本地文件夹

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

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

回答

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(); 
相关问题