2010-10-14 337 views
1

如何使用Java程序将文件从Linux系统复制到Windows系统? 感谢您的帮助。 我想从Linux的文件复制:/inet/apps/test.java到Windows系统1:C:\ APPS \测试 我们可以用下面的程序来复制如何使用Java程序将文件从Linux系统复制到Windows系统?

public static void copyFiles(String fromFile, String toFile){ 
    FileInputStream from = null; 
     FileOutputStream to = null; 
     try { 
      from = new FileInputStream(fromFile); 
      to = new FileOutputStream(toFile); 
      byte[] buffer = new byte[4096]; 
      int bytesRead; 

      while ((bytesRead = from.read(buffer)) != -1) 
      to.write(buffer, 0, bytesRead); // write 
     }catch(Exception e){e.printStackTrace();} 
     finally { 
      if (from != null) 
      try { from.close();} catch (IOException e) {} 
      if (to != null)try {to.close();} catch (IOException e) {} 
     }  
} 

该程序在Linux上运行。 所以fromFile = /inet/apps/test。什么是toFile路径。如果我简单地使用C:\apps\test那么应用程序如何识别目标为System1

+1

你将不得不详细说明你是否想回答我的朋友。也许你应该阅读Jon Skeet的指南来提问SO:http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx – Aren 2010-10-14 23:27:22

回答

2

Java在Windows和Linux文件之间没有区别。所以,只要你可以访问你的Java程序运行的计算机中的两个文件系统,你可以复制它们。

+0

我在linux中运行java文件。所以unixFile Path将会是/inet/apps/test.java。如何指定Windows文件>对不起,它可能是基本的。 – vishnu 2010-10-14 23:26:13

1
  1. 我想你问的是该程序的一些 属性。

    在这种情况下,属性应为 可配置。您可以将 属性文件保存在与您的Java程序相同的 目录中,或保留在 类路径中。

  2. 属性文件可能类似于:

    windows.filepath = C:\user\somefile.txt 
        unix.filepath = /inet/apps/test.txt 
    

    所以,当你口环境。您 不需要更改属性。

    如果你问有关如何端口 test.java到Windows,然后就 将文件复制到JAVA_HOME目录上 窗口,然后你是好去。

  3. 或者如果您有双启动系统。 您可以访问您的linux drive from windows,但不能通过其他方式访问 。

+0

谢谢。如果我使用windows.filepath = C:\ user \ somefile.txt.in这种方式应用程序如何识别目标系统。请参阅我的编辑问题 – vishnu 2010-10-15 00:36:22

0

如果Unix系统具有窗口文件系统交叉安装(例如,通过SMB共享),你应该能够找到对应于Windows目的地的UNIX路径名,并复制你正在做的事情。

否则,您将需要使用某种文件传输协议来复制文件。

没有什么Java魔法可以让你神奇地将文件写入不同的计算机。操作系统必须设置为允许这种情况发生。

跟进 - 你问:

我不知道魔术的想法。所以我的问题是如何将文件从Windows复制到Linux。通常我们在unix上执行FTP而无需安装,或者我们使用FileZilla工具进行传输。这里如果我们想通过java来做同样的事情,那么该怎么做呢?

我不知道我怎么能说这种不同让你明白,但这里有云:

你在Java中的选择基本上是相同的:

  • 您可以使用FTP。例如,在目标机器上,将源文件的路径名转换为“ftp:// ...”URL,并使用java.net.URL.connect()来拉取它。可能有第三方Java库可用于将文件“推送”到FTP服务器。
  • 如果您的操作系统是通过文件系统交叉安装设置的,您可以执行常规文件复制,就像您的代码一样。
  • 您可以使用java.lang.System.exec(...)来运行一些特定于Windows的命令行实用程序来执行复制。

在所有情况下,您都需要弄清楚如何映射Windows和Linux世界之间的路径名。

+0

“您需要使用某种文件传输协议来复制文件”的含义是什么。这是通过UNIX框吗?我需要通过Java程序。请帮忙 – vishnu 2010-10-15 16:37:36

+0

不是同一台机器上的文件? – 2010-10-16 13:12:47

+0

@Vanchinathan Chandrasekaran - 如果是这样,你会如何解释这个短语:*“......那么应用程序如何将目标识别为System1。”*?我认为根本问题是OP *认为Java可以将文件从一台机器奇迹般地复制到另一台机器。 – 2010-10-16 15:31:25

相关问题