当前位置:  技术问答>java相关

如何在ftp server中改变ascii或binary传输模式?

    来源: 互联网  发布时间:2015-04-20

    本文导语:  我写了一个ftp server程序,当把ftp server放在unix上时,上传至ftp server 的文本文件每行最后都多出一个^M,ftp server在windows中则正常。 是不是因为ascii、binary传输模式问题?请问如何处理ascii和binary传输模式? server在...

我写了一个ftp server程序,当把ftp server放在unix上时,上传至ftp server
的文本文件每行最后都多出一个^M,ftp server在windows中则正常。
是不是因为ascii、binary传输模式问题?请问如何处理ascii和binary传输模式?
server在接收ascii和binary文件时,应该如何处理?

|
接受ascii和binary文件,应该用不同的流读取,
你可以先判断文件的类型,然后根据类型:
ascii用 BufferedReader或其他Reader 来读取;
bin用 DataInputStream来读取。

|
import java.io.*;
import sun.net.ftp.FtpClient;

public class FtpExample {

  public static void main(String args[]) throws Exception {

    FtpClient fc;

    String host = args[0];
    String path = args[1];
    String username = args[2];
    String password = args[3];

    int lastSlash = path.lastIndexOf('/');
    String filename = path.substring(lastSlash+1);
    String directory = path.substring(0,lastSlash);

    FtpClient client = new FtpClient(host);
    client.login(username, password);
    client.binary();
    client.cd(directory);

    InputStream is = client.get(filename);
    BufferedInputStream bis = new BufferedInputStream(is);

    OutputStream os = new FileOutputStream(filename);
    BufferedOutputStream bos = new BufferedOutputStream(os);

    byte[] buffer = new byte[1024];
    int readCount;

    System.out.println("Getting: " + filename);
                    
    while( (readCount = bis.read(buffer)) > 0) {
      bos.write(buffer, 0, readCount);
    }
    bos.close();
//    client.closeServer();
  }
}


|
这个不是由于ascii和binary的问题,主要是Linux和Windows的换行符是不一样
所致

|
如果是ascii模式,你可以在接收了每一行之后只插入r不要rn

|
多出那个^M是必然的,两个系统对回车换行的理解是不一样的
用bi可以指定上传用二进制方式

对于已经上传了文件,你可以在vi中,用:
:%s/^V^M//g
把所有的^M都删除掉!

|
http://java.sun.com/docs/books/tutorial/networking/

    
 
 

您可能感兴趣的文章:

  • 关于FTP的块传输和压缩传输模式
  • windows unix ftp传输问题,请大家指导
  • FTP文件传输软件 Cyberduck
  • 请教各位大虾:在linux下,怎样用程序实现基于ftp传输文件?
  • 怎么利用ftp传输文件,我是小白
  • 可不可以在程序中直接使用ftp客户端的函数实现文件传输?
  • 在java中调用系统FTP命令,实现文件传输???
  • 十万火急,关于Unix下C编程(FTP传输方面)
  • telnet下面如何支持文件传输?因为客户那边有安全需求,不允许用ftp和ssh
  • Ftp下怎么判断要传输的文件是asc file还是binary file?高分求教~~!
  • 关于vmware中两个系统之间用ftp传输的流量问题(在线等)
  • 请问,如何用程序判断一个用ftp传输的文件已经完成?
  • 如何用ftp自动传输(上传和下载)
  • 请问在Unix下开发ftp传输模块,有没有什么系统函数可以调用。
  • 如何用java开发基于ftp的文件传输程序?
  • FTP传输425 Can't open passive connection: Permission denied.的错误
  • 用Shell怎样实现两台主机通过ftp文件传输
  • 请教脚本中如何判断文件是否通过ftp传输成功问题
  • [加急]一个ftp传输模式问题!!(高手请进)--希望得到版主的帮助!
  • 如何实现在AIX系统自动ftp传输的shell script??
  • 请问ftp上传大小写突然改变跟linux有关吗?
  • ftp远程删除文件的命令是什么,像改变目录是CWD
  • 如何改变wu_ftp的默认文件权限。就像Pro_ftpd的umask参数。
  • FTP上创建的文件夹的创建日期始终和本机的对不上(无论如何改变日期和时间)(紧急!!!)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何将ftp服务器缺省交互模式设置为off?
  • FTP passive模式下客户端口的选择
  • ftp 被动模式下用户端口的选择
  • 请问我想开通linux的telnet,ftp服务,在txt模式下应该怎样配置?
  • 自己实现linux下的ftp客户端,先用port命令后用append命令,报告错误425请问是哪里错了?,应该把模式置为pasv嘛??
  • FTP主动模式、被动模式介绍
  • Virtual PC下安装的redhat9,共享网络模式(NAT),能用ftp、解析域名,却ping不到网关和网络上的机器
  • iptables 设置允许被动模式FTP
  • java命名空间javax.print.attribute.standard类referenceurischemessupported的类成员方法: ftp定义及介绍
  • 用ftp命令连到ftp服务器后,在ftp提示符下用什么命令可以查看本地机器当前目录有哪些文件?
  • ftp协议介绍及ftp常用的上传下载等操作命令使用方法
  • 为什么会出现ftp: ftp/tcp: unknown service
  • FTP客户端Java类库 ftp4j
  • 请问如何在Redhat7.1下安装Ftp服务,如何开启Ftp帐号????请教!!!急急急急急急
  • FTP匿名登陆 LINUX 出现错误 linux FTP 550 permission
  • ubuntu装好BUM后,看不到FTP服务,如何开启FTP服务?
  • 基于Web的FTP客户端 net2ftp
  • 跨平台FTP服务器 Wing FTP Server
  • Node.js 的 FTP 客户端 node-ftp
  • FTP客户端 FTP Rush
  • 如何在Red Hat上建立FTP服务 并且建立FTP一个用户
  • 请教一个跑shell连ftp时获取ftp返回值的问题
  • Crob FTP Server并发用户测试,免费开放FTP,欢迎参加
  • 在安装linux7.2时忘了选择FTP,怎样手动安装FTP?
  • 在ubanto中使用ftp命令访问ftp站点,但是文件列表显示乱码
  • ftp client程序怎麼通過代理服務器連上ftp server?
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • 我想在我的red hat linux开FTP服务器,有没有什么软件可以开FTP服务器的??
  • vsftpd ftp: ftp/tcp: unknown service 请教高手指点


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3