2015-01-08 51 views
-1

我想写一个程序来从linux机器复制/创建一个文件到另一个linux/windows机器。 我尝试下面的代码,这将创造在另一台Windows计算机一个文件..将代码从一台linux机器复制到另一台linux机器的Java代码

import java.io.File; 
import java.io.IOException; 

public class Example2 { 

    public static void main(String[] args) { 
     String path = "\\\\10.15.0.166"+File.separator+"test";   

      String fname= path+File.separator+"Sample.pdf"; 
      File file = new File(fname); 
      try { 
       file.createNewFile(); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      System.out.println("Exists"+file.exists()); 
      file.getParentFile().mkdirs(); 
    } 

} 

它工作在Windows窗口。 但是,当我尝试从Linux机器。它是在linux机器本身创建文件夹。 任何人都可以帮我解决这个问题吗?

回答

0

您应该使用类似FTP的东西来在unix机器之间移动文件。

JSCH是一个很好的API。

您将需要一些用户认证寿。

下面是一个例子:

JSch jsch = new JSCH(); 
Session session = jsch.getSession(config.getUsername(), config.getHostname(), config.getPort()); //port is usually 22 
session.setPassword(config.getPassword()); 

session.connect(); 

Channel channel = session.openChannel("sftp"); 
channel.connect(); 
ChannelSftp cFTP = (ChannelSftp) channel; 

String sourceFile = "---", targetFile = "---"; 
cFTP.put(sourceFile , targetFile); 

cFTP.disconnect(); 
session.disconnect(); 
+0

对不起。 'cFTP'。纠正。 – Netto

+0

我试图在命令行中运行该程序,如下所示,但得到编译错误找不到符号\ n javac -cp。:/ home/divya/jcsh-0.1.42.jar FileCopierOverNetwork.java FileCopierOverNetwork.java :1:包com.jcraft.jsch不存在 import com.jcraft.jsch.Channel; ^ FileCopierOverNetwork.java:2:包com.jcraft.jsch不存在 import com.jcraft.jsch.ChannelSftp; \t \t^ 14错误 – DRD

+0

/home/divya/**jcsh-0.1.42.jar**您必须在拼写错误的jar文件名称。该库应该是** JSCH而不是** JCSH ** – Netto

0

您不能在Linux下以这种方式在另一台计算机上创建文件...您正在使用Windows共享文件夹,这不是在Linux世界中共享文件的方式。你有两个选择:

  1. 或者通过连接这两个文件系统,以NFS例如(一 一种Unix文件的共享),以这样的方式,第二文件系统 被安装在第一个,这样一路径将以类似于Windows文件共享路径的方式将您引导至第二台机器。
  2. 通过使用一些协议来传输您的文件(FTP,RSYNC, 等)。
1

若要上述应用,我们必须在上述代码中, session.put(“StrictHostKeyChecking”,“否”)增加一个线;在session.connect()之前; 完整的程序是

import com.jcraft.jsch.Channel; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.JSchException; 
import com.jcraft.jsch.Session; 
import com.jcraft.jsch.SftpException; 
import java.io.File; 

public class test { 
public static void main(String args[]) throws JSchException { 

    JSch jsch = new JSch(); 
    Session session = jsch.getSession("user", "10.15.0.243", 22); //port is usually 22 
    session.setPassword("password1."); 
    session.put("StrictHostKeyChecking", "no"); 
    session.connect(); 
    Channel channel = session.openChannel("sftp"); 
    channel.connect(); 
    ChannelSftp cFTP = (ChannelSftp) channel; 
    jsch.setConfig("StrictHostKeyChecking", "no"); 
    String sourceFile = "/home/divya/hi.txt", targetFile = "/home/user/test"; 
    try { 

     cFTP.put(sourceFile , targetFile); 
    } catch (SftpException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    cFTP.disconnect(); 
    session.disconnect(); 
} 

}

问候

迪夫亚

相关问题