2010-10-14 196 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

相關問題