java连接ftp服务器下载文件问题

yourslee 2007-09-20 11:03:09
java连接ftp服务器下载文件

下载下来的文件打开后格式不对,exe文件不能运行,pdf文件内容为空
只有txt文件可以正确显示。

是不是编码问题?还是程序不对。

主要代码如下:

myFtp.openServer(hostname);
myFtp.login(username,password);
myFtp.binary();

TelnetInputStream is = myFtp.get(this.dldir + "/" + fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(is));

StringBuffer sb = new StringBuffer();
int length;
char buffer[] = new char[1];
while((length = br.read(buffer,0,1)) != -1) {
sb.append(buffer);
}

byte buf[] = sb.toString().getBytes();

FileOutputStream f1 = new FileOutputStream(this.bdldir + "/" + fileName);
f1.write(buf);
...全文
311 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lisliefor 2007-09-20
  • 打赏
  • 举报
回复
使用过滤流
yourslee 2007-09-20
  • 打赏
  • 举报
回复
但是发现运行速度比上面的慢很多,是不是没有用缓存的原因?

使用缓存的话该怎么写?
yourslee 2007-09-20
  • 打赏
  • 举报
回复
解决了

TelnetInputStream is = myFtp.get(this.dldir + "/" + fileName);
FileOutputStream f1 = new FileOutputStream(this.bdldir + "/" + fileName);
byte buf[] = new byte[1];
int length;
while((length = is.read(buf,0,1)) != -1) {
f1.write(buf);
}
f1.close();
is.close();
yourslee 2007-09-20
  • 打赏
  • 举报
回复
byte buf[] = new byte[2048];
int length;
while((length = is.read(buf,0,2048)) != -1) {
f1.write(buf);
}

is.read()没改害我测试的文件都大到好几个G了呵呵
那个值是越大越好吗?是不是占用内存的资源?
一般设多少?跟网络带宽有没有关系?

marlonqx 2007-09-20
  • 打赏
  • 举报
回复
byte buf[] = new byte[2048];
把byte数组的值设大点啊
yourslee 2007-09-20
  • 打赏
  • 举报
回复
能讲具体点吗?或者看下实现代码。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧