FTP协议中的 Binary和ASCII模式如何实现?

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:08:47
我在在用java编写FTP服务器。
在实现传输模式时遇到了如下问题。其中一段是:

FileReader fr = new FileReader(f);//f是File类型
BufferedReader r=new BufferedReader(fr,1024);
OutputStreamWriter w = new OutputStreamWriter(s.getOutputStream());
BufferedWriter out=new BufferedWriter(w,1024);

while((c = r.read())!=-1) {
out.write((char) c);
}
out.flush();

这段代码没有考虑传输模式是ASCII还是Binary。
我用了这段代码传输TXT文件成功了,但是传输rar,jpg和exe都得到了乱码。

请问如何用java代码实现Binary模式下的传输?
我知道r.read()返回的是两个字节,难道这就是问题的所在吗?

你这个代码根本跟ftp服务器没关系吧,就是个传文件,ftp要有协议的。

用reader和writer是字符流,只能对文本文件,不能对二进制文件,所以得用Stream
FileInputStream fr = new FileInputStream (f);//f是File类型
byte[] buff = new byte[1024];
OutputStream w = s.getOutputStream();
int c;
while((c = r.read(buff))!=-1) {
out.write(buff,0,c);
}
或者用BufferedInputStream和BufferedOutputStream也可以