如何使用 java 从 windows 计算机向服务器发送文件 (move/copy)

How to send a file (move/copy) from windows computer to server using java

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

我的电脑运行的是 Windows-7。我的文件存储在 :

C:\Transfer\

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

\server1\myname\TransferData\

我想使用 Java 执行此操作。我在命令提示符下尝试了一些这样的命令:

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

出于某种原因,这在手动完成时有效并且不适用于 java。我得到 IOException。

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();

上面没有抛出异常。也不会将服务器位置挂载到我的计算机上。

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

为什么不用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();
                    }

                }
            }