我希望有人可以帮助我(再一次)。
我有大量的 smmll 文件(超过 4000 个),每个文件只有几 K。我用 java 编写了一个 FTP 程序,它将单独传输每个文件,但这需要很长时间。此外,握手开销似乎使问题变得更糟。
我想做的是打开 FTP 连接发送所有文件,然后再次关闭它。
我知道这在 FTP 中是可能的,但是如何在 java 中实现这一点超出了我的范围。
我目前将文件名放在一个数组中,因此解析它们是没有问题的。我尝试调用以下类并将文件名传递给它,但几个小时后它仍然每秒移动大约 1 个文件。
package website;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class ftpUpload {
public ftpUpload(String target, String savename, String localFilePath) {
URL url;
try {
url = new URL(target + savename + ";type=i");
URLConnection con = url.openConnection();
BufferedOutputStream out =
new BufferedOutputStream(con.getOutputStream());
FileInputStream in =
new FileInputStream(localFilePath + savename);
int i = 0;
byte[] bytesIn = new byte[1024];
while ((i = in.read(bytesIn)) >= 0) {
out.write(bytesIn, 0, i);
}
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
有没有办法可以使用 ftp 站点用户名和密码打开连接,然后将文件发送给它,最后关闭连接?
在我看来,这比创建多个线程同时发送文件更容易。
任何建议都非常受欢迎。
保罗