如何使用java访问通过LAN连接的其他计算机上的文件(显示,移动)?

时间:2013-03-17 11:03:58

标签: java

我目前正致力于负载均衡项目。我需要访问通过LAN连接到我的另一台计算机上的文件,以便我可以平衡该计算机的磁盘空间。有没有办法用java做到这一点?就像我如何能够像树一样显示存储在另一台计算机中的所有文件?使用java。

2 个答案:

答案 0 :(得分:4)

Java没有提供实现该方法的本机方法。最简单的方法可能是使用NFS挂载其他计算机'磁盘到您的计算机,然后您的Java代码可以像本地磁盘一样操作那些远程磁盘。

答案 1 :(得分:1)

首先,您必须通过网络共享文件,并为远程计算机授予对所有文件的读/写权限。然后你可以使用java.nio类来轻松地完成它:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class MoveRemoteFiles
{
    public static void main(String[] args) throws IOException
    {
        String originalLocation = "\\\\NETWORK-LOCATION\\MyFile.txt";
        String newLocation = "\\\\NETWORK-LOCATION\\MyFile_2.txt";

        Path originalPath = Paths.get(originalLocation);
        Files.move(originalPath, Paths.get(newLocation));
    }
}

关于所有文件的列表,我建议使用Apache Commons IO库和FileUtils.listFiles()方法来节省时间来设计自己的解决方案,如下所示:

import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;

public class ListRemoteFiles
{
    public static void main(String[] args)
    {
        String originalLocation = "\\\\NETWORK-LOCATION\\Folder\\";

        //List all files of all extensions (No Folders)
        Collection<File> files = FileUtils.listFiles(new File(originalLocation), null, true);
        //List all files and folders
        Collection<File> filesAndFolders = FileUtils.listFilesAndDirs
                                           (
                                               new File(originalLocation),
                                               TrueFileFilter.INSTANCE,
                                               TrueFileFilter.INSTANCE
                                           );
    }
}

然后你可以使用上面的方法移动它们。