当前位置: 首页 > 面试题库 >

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

吕霍英
2023-03-14
问题内容

我有一个简单的问题。我正在尝试将文件上传到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编写了一个访问URL的小代码。该代码适用于HTTP连接,但不适用于HTTPS(错误粘贴在下面) 如有任何帮助,我们将不胜感激。 代码: 错误: 异常线程"main"javax.net.ssl.SSLHandshake异常:sun.security.validator.验证器异常:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathB

  • 问题内容: 我正在构建一个应用程序,该应用程序会定期检查一些rss feed中的新内容。这些提要中的某些只能通过https访问,而有些则具有自签名或证书破损。我希望能够继续检查它们。 请注意,此应用程序中的安全性不是问题,其目标是以最小的努力访问内容。 我正在使用以下代码来规避大多数证书问题: 这适用于大多数站点,但是在一个站点上我仍然遇到此异常: 有谁知道我该如何解决? 问题答案: 有一个解决方

  • 我一直在使用ftp在android应用程序的服务器上上传图像,我正在使用以下代码连接ftp。它在Wi-fi中工作正常,但如果我切换到3G或2G连接,就会出现连接超时错误。那么,你能告诉我如何处理这种情况吗。我的客户在Veriozon也面临这个问题,Sprint,ATT网络提供商。它的iPhone版本在所有网络中都运行良好。 代码: 错误: JAVA网ConnectException:无法连接到主机

  • 问题内容: 我正在尝试通过URLConnection上传文件,但是我需要将其读取/写入为二进制文件,而无需进行任何编码更改。 所以我试图从读取数组,但是现在我有一个问题。我用于输出到服务器的对象不允许我执行操作(类型为)。我怎样才能解决这个问题?还是有另一种快速将二进制数据从a复制到a的方法? 谢谢 问题答案: 对象(包括)专门用于输出字符数据。听起来您想要这里而不是这里。 你是哪里人 如果它是通

  • 问题内容: 我在使用DB2时遇到问题。我刚刚将db2安装为db2admin并使用了密码。当我尝试连接到数据库时,它已成功完成,并且在运行任何简单的选择查询时,都会出现以下错误:- DB2 SQL错误:SQLCODE = -204,SQLSTATE = 42704,SQLERRMC = DB2ADMIN.LOGIN,DRIVER = 3.57.82 我有一个名为onp的数据库,其中有一个名为“ lo

  • 我以前问过另一个问题,可以在Jsoup解析HTML问题上看到。我试图解析一个数据值从一个网站到我的android应用程序。我现在意识到,虽然在我的应用程序中,我给出了网页的url和我需要的数据,但当我从我的应用程序连接到url时,它总是连接到网站的登录页面,因此找不到要解析的数据。我在想有没有办法避免这种情况?