从没有网络服务器的远程机器读取文件

Read file from remote machine without web server

我有一个Spring启动程序运行在一台服务器上,它需要从不同的机器读取文件(两台机器都是WindowsOS)。在远程机器上,我不使用任何网络服务器,例如 apache/nginx - 我也不想。我想直接从磁盘读取文件。

我想要的是提供所需的参数(可能是远程主机的 IP、用户名和密码),以及文件系统中的路径 - 无需 Web 服务器即可直接访问文件。

public void readFile(String ip, String userName, String password, String path);

我怎样才能做到这一点?

您需要从 Java 执行 scp(允许从不同机器复制文件)。 This 图书馆会提供帮助

还有一个有效的example,它将文件从远程复制到本地

  JSch jsch = new JSch();
  Session session = jsch.getSession(user, host, 22);
  ...
  String command = "scp -f "+rfile;
  Channel channel = session.openChannel("exec");
  ((ChannelExec)channel).setCommand(command);

  InputStream in = channel.getInputStream();
  channel.connect();

  // "in" contains the input stream of the file

你可以这样做

  1. 在另一台机器上激活 FTP 协议并使用 java ftp 实现
  2. 创建网络共享驱动器并向您域中的特定 windows 用户授予访问权限。您只需要知道网络驱动器 url 就可以像访问本地文件一样访问该文件
  3. 从您的 java 代码中执行单独的 powershell /ssh / scp / ... 任务以打开远程会话并传输文件
  4. 在另一台电脑上的 java 和 运行 中编写您自己的 http-server 应用程序并作为客户端连接到它
  5. ...