我正在寻找可以用Java在Windows服务器之间复制文件的代码或库。设想一个运行后台线程的主服务器,以便每当事务完成时,它都会将数据库文件备份到备份服务器。(这是必需的协议,因此无需讨论此操作的优缺点)。换句话说,事务完成后,将执行Java代码,将一个目录复制到备份服务器。
按照Windows机器的设置方式,主服务器将备份服务器的C:驱动器映射为它自己的Z:驱动器。这两台计算机都运行Windows 2003或2008 Server。Java 1.6。
发布于 2010-10-02 00:17:08
在另一个论坛上找到了正确的答案,并在设置上做了一些改动。在Windows中,将文件从一台机器复制到另一台机器(使用.bat文件或直接使用Java代码)的问题在于用户权限。在主服务器上,必须使用管理员的用户名和密码将Tomcat进程设置为以管理员身份运行。(右键单击Tomcat服务,选择"Log On“选项卡,输入管理员的用户名/密码)。运行Tomcat的默认用户(本地用户)不足以在Windows的网络驱动器之间复制文件。当我设置正确的时候,我在这篇文章之前尝试过的.bat文件解决方案和这里建议的一个简单的Java解决方案都工作得很好。
希望这对其他人有帮助,并感谢你的建议。
发布于 2010-10-01 22:20:47
通过File#listFiles()在一个磁盘上的目录上获取文件,遍历每个文件,在另一个磁盘上创建新的File,从一个磁盘上的文件读取FileInputStream,并将其写入另一个磁盘上的文件上的FileOutputStream。
在坚果里:
for (File file : new File("C:/path/to/files").listFiles()) {
if (!file.isDirectory()) {
File destination = new File("Z:/path/to/files", file.getName());
// Do the usual read InputStream, write OutputStream job here.
}
}另请参阅:
顺便说一句,如果您使用的是Java7,那么您应该使用Path#copyTo()来完成此任务。
Paths.get("C:/path/to/files").copyTo(Paths.get("Z:/path/to/files"));发布于 2010-10-01 23:37:36
为此,我非常推荐使用Apache Commons IO。
FileUtils类提供了遍历目录和将文件从一个目录复制到另一个目录的方法。你不必担心自己读写文件,因为这一切都是由库为你完成的。
https://stackoverflow.com/questions/3839948
复制相似问题