繁体   English   中英

使用Java在Windows服务器之间复制文件?

[英]Copy Files Between Windows Servers with Java?

我正在寻找代码或库,可以用来在使用Java的Windows服务器之间复制文件。 为运行后台线程的主服务器提供图片,以便每当事务完成时,它将数据库文件备份到备份服务器。 (这是必需的协议,因此无需讨论此操作的利弊)。 换句话说,事务完成,执行Java代码,将一个目录复制到备份服务器。

Windows机器的设置方式是,主服务器将备份服务器的C:驱动器映射为自己的Z:驱动器。 两台运行Windows 2003或2008 Server的计算机。 Java 1.6。

在另一个论坛上找到正确的答案,并从中弄乱了设置。 在Windows中将文件从一台计算机复制到另一台计算机(使用.bat文件或使用直接Java代码)的问题是用户权限。 在主服务器上,必须使用该管理员的用户名和密码将Tomcat进程设置为以管理员身份运行。 (右键单击Tomcat服务,选择“登录”选项卡,输入管理员的用户名/密码)。 Tomcat运行的默认用户(本地用户)不足以在Windows上的网络驱动器之间复制文件。 当我正确设置该值时,我在本文之前尝试过的.bat文件解决方案和此处建议的Java直接解决方案都可以正常工作。

希望对您有所帮助,并感谢您的建议。

从一个磁盘上的目录中通过File#listFiles()获取文件,遍历每个File ,在另一磁盘上创建一个新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.
    }
}

也可以看看:


顺便说一句,如果您使用的是Java 7,则应该使用Path#copyTo()

Paths.get("C:/path/to/files").copyTo(Paths.get("Z:/path/to/files"));

我真的建议为此使用Apache Commons IO

FileUtils类提供了遍历目录并将文件从一个目录复制到另一个目录的方法。 您不必担心自己读写文件,因为这一切都是由库为您完成的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM