FTP添加了额外的字符

时间:2011-09-28 19:37:19

标签: android ftp

我有一个插入Android 2.2手机蓝牙原始二进制数据的插件。进入的数据进入1024大小的缓冲区。我读取()数据,然后将其写入文件。我通过FTP将该文件发送到我的电脑。我注意到一个令人不安的模式,当ftp'ing每隔一段时间插入一个额外的字符。所以我先将缓冲区打印到LogCat,发现字符不存在。这是我的读写代码。

FTPClient con = new FTPClient();
File file = new File(Environment.getExternalStorageDirectory() + "/ftp/new/" + "testdata.bin");

try {
    con.connect("someIPAddress");
    if (con.login("anonymous", "anonymous@anon.com")) {
        con.enterLocalPassiveMode(); // important!

        FileInputStream in = new FileInputStream(file);
        boolean result = con.storeFile("testdata.bin", in);
        in.close();
        if (result) {
            Log.v("upload result", "succeeded");
        }
    }
} catch (Exception e) {e.printStackTrace();}

以下是logcat的输出示例:

09 15 D0 0D 17 0A 06 08 07

以下是ftp'ing之后文件中的内容:

09 15 D0 0D 17 0D 0A 06 08 07

嗯,我认为hmm 0A正在注入0D来制作(CRLF),但每次0A都不会发生这种情况。我可以在C#中编写相同的程序,这根本不会发生。那么任何想法或帮助?

在进一步调查中,我发现当进入的数据是17 0A且文件显示17 0D 0A时会发生这种情况。

2 个答案:

答案 0 :(得分:2)

解决方案:FTPClient默认将文件作为ASCII发送。使用以下命令将fileType设置为Binary文件:

con.setFileType(FTP.BINARY_FILE_TYPE);

答案 1 :(得分:0)

Windows,unix和mac都有不同的行结尾。

FTP以ASCII模式“修复”了这个。