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