我目前正致力于负载均衡项目。我需要访问通过LAN连接到我的另一台计算机上的文件,以便我可以平衡该计算机的磁盘空间。有没有办法用java做到这一点?就像我如何能够像树一样显示存储在另一台计算机中的所有文件?使用java。
答案 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
);
}
}
然后你可以使用上面的方法移动它们。