1

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

4

2 回答 2

4

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

于 2013-03-17T11:09:59.877 回答
0

首先,您必须通过网络共享文件,并授予远程计算机对所有文件的读/写权限。然后你可以使用 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
                                           );
    }
}

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

于 2013-03-17T11:11:58.013 回答