gpt4 book ai didi

java - Java 中的 URL 连接 (FTP) - 简单问题

转载 作者:行者123 更新时间:2023-11-30 06:35:36 26 4
gpt4 key购买 nike

我有一个简单的问题。我正在尝试用 Java 将文件上传到我的 ftp 服务器。

我的计算机上有一个文件,我想复制该文件并上传。我尝试手动将文件的每个字节写入输出流,但这不适用于复杂的文件,例如 zip 文件或 pdf 文件。

File file = some file on my computer;
String name = file.getName();
URL url = new URL("ftp://user:password@domain.com/" + name +";type=i");
URLConnection urlc = url.openConnection();
OutputStream os = urlc.getOutputStream();

//then what do I do?

只是为了好玩,这是我尝试做的:

OutputStream os = urlc.getOutputStream();
BufferedReader br = new BufferedReader(new FileReader(file));
String line = br.readLine();
while(line != null && (!line.equals(""))) {
os.write(line.getBytes());
os.write("\n".getBytes());
line = br.readLine();
}
os.close();

例如,当我对 pdf 执行此操作,然后尝试打开我使用此程序运行的 pdf 时,它说尝试打开 pdf 时发生错误。我猜是因为我正在向文件写入“\n”?如何在不执行此操作的情况下复制文件?

最佳答案

当您尝试逐字节复制二进制文件的精确内容时,请勿使用任何 ReaderWriter 类。仅将这些用于纯文本!相反,使用 InputStreamOutputStream 类;它们根本不解释数据,而 ReaderWriter 类将数据解释为字符。例如

OutputStream os = urlc.getOutputStream();
FileInputStreamReader fis = new FileInputStream(file);
byte[] buffer = new byte[1000];
int count = 0;
while((count = fis.read(buffer)) > 0) {
os.write(buffer, 0, count);
}

这里你的URLConnection用法是否正确,我不知道;使用 Apache Commons FTP(如其他地方所建议的)将是一个好主意。无论如何,这将是读取文件的方式。

关于java - Java 中的 URL 连接 (FTP) - 简单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com