有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用java将文件(移动/复制)从windows计算机发送到服务器

我想将一些文件从我的计算机复制到服务器位置

我的计算机在Windows-7上运行。我的文件存储在:

C:\Transfer\

我必须传输文件的服务器位置是:

\\server1\myname\TransferData\

我想用Java来做这件事。我在命令提示符下尝试了一些类似的命令:

pushd \\server1\myname\TransferData\
Z:\> mv C:\Transfer\* Z:\

由于某些原因,当手动执行时,此操作有效&;不能通过java工作。我有个例外

我一直在使用的Java代码:

Process proc = Runtime.getRuntime().exec("pushd \\server1\myname\TransferData\");
proc.waitFor();
// once this server location gets mounted - i was thinking of moving the file. that part works through java.

我得到的错误是:

Exception in thread "main" java.io.IOException: Cannot run program "pushd": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.data.Main.main(Main.java:34)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)

我也试过:

Process proc = Runtime.getRuntime().exec("cmd pushd \\server1\myname\TransferData\");
proc.waitFor();

&

Process proc = Runtime.getRuntime().exec("cmd \c pushd \\server1\myname\TransferData\");
proc.waitFor();

&

Process proc = Runtime.getRuntime().exec("cmd.exe pushd \\server1\myname\TransferData\");
proc.waitFor();

上述操作不会引发异常。也不会将服务器位置装载到我的计算机上

我在服务器上有写权限。我真的需要解决我的问题。谢谢


共 (1) 个答案

  1. # 1 楼答案

    为什么不使用JSCH呢?我已经成功地将文件从Windows计算机传输到Linux计算机。事实上,当我来到这里时,我正在寻找反面。您可以使用以下程序:

                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;
    
                public class FileTransfer {
                    public static void main(String args[]) {
                        String hostname = "";
                        String username = "";
                        String password = "";
                        String copyFrom = "";
                        String copyTo = ""; 
                        JSch jsch = new JSch();
                        Session session = null;
                        System.out.println("Trying to connect.....");
                        try {
                            session = jsch.getSession(username, hostname, 22);
                            session.setConfig("StrictHostKeyChecking", "no");
                            session.setPassword(password);
                            session.connect(); 
                            Channel channel = session.openChannel("sftp");
                            channel.connect();
                            ChannelSftp sftpChannel = (ChannelSftp) channel; 
                            sftpChannel.get(copyFrom, copyTo);
    
                            sftpChannel.exit();
                            session.disconnect();
                            System.out.println("Done !!");
                        } catch (JSchException e) {
                            e.printStackTrace();  
                        } catch (SftpException e) {
                            e.printStackTrace();
                        }
    
                    }
                }