首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java在Windows服务器之间复制文件?

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

Stack Overflow用户
提问于 2010-10-01 22:11:35
回答 3查看 3.8K关注 0票数 0

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-02 00:17:08

在另一个论坛上找到了正确的答案,并在设置上做了一些改动。在Windows中,将文件从一台机器复制到另一台机器(使用.bat文件或直接使用Java代码)的问题在于用户权限。在主服务器上,必须使用管理员的用户名和密码将Tomcat进程设置为以管理员身份运行。(右键单击Tomcat服务,选择"Log On“选项卡,输入管理员的用户名/密码)。运行Tomcat的默认用户(本地用户)不足以在Windows的网络驱动器之间复制文件。当我设置正确的时候,我在这篇文章之前尝试过的.bat文件解决方案和这里建议的一个简单的Java解决方案都工作得很好。

希望这对其他人有帮助,并感谢你的建议。

票数 1
EN

Stack Overflow用户

发布于 2010-10-01 22:20:47

通过File#listFiles()在一个磁盘上的目录上获取文件,遍历每个文件,在另一个磁盘上创建新的File,从一个磁盘上的文件读取FileInputStream,并将其写入另一个磁盘上的文件上的FileOutputStream。

在坚果里:

代码语言:javascript
复制
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()来完成此任务。

代码语言:javascript
复制
Paths.get("C:/path/to/files").copyTo(Paths.get("Z:/path/to/files"));
票数 0
EN

Stack Overflow用户

发布于 2010-10-01 23:37:36

为此,我非常推荐使用Apache Commons IO。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3839948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档