android - FTP 添加了额外的字符

标签 android ftp

我有一个 instream,它从 Android 2.2 手机上的蓝牙接收原始二进制数据。传入的数据进入大小为 1024 的缓冲区。我读取()数据,然后将其写入文件。我通过 FTP 将该文件发送到我的计算机。当 ftp 时,我注意到一个令人不安的模式,每隔一段时间就会插​​入一个额外的字符。所以我首先将缓冲区打印到 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 后文件中的内容:

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

好吧,我认为嗯 0A 某些东西正在注入(inject) 0D 来制作 (CRLF),但它不会在每个 0A 时都发生。我可以用 C# 编写相同的程序,但这根本不会发生。那么有什么想法或帮助吗?

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

最佳答案

解决方案:默认情况下,FTPClient 将以 ASCII 格式发送文件。使用此命令将文件类型设置为二进制文件:

con.setFileType(FTP.BINARY_FILE_TYPE);

关于android - FTP 添加了额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588625/

相关文章:

Android Market - 开发者控制台 : marketing enabled/disabled?

eclipse - 如何在Eclipse中使用RSE插件?

python - 如何使用 PIL 将图像保存在内存中并上传?

java - 从 IP 摄像头拍照并使用 FTP 上传

node.js - Gulp vinyl ftp - 如何使用清洁功能?

python - 使用 pyftp 列出文件 - proftpd 与 pyftpdlib 行为

android - 如何为印地语将文本添加到语音中?

android - 如何在android中正确执行if?

android - 在真实设备上调试已安装的应用程序

android - 错误 : Could not find a version that satisfies the requirement Cython (from versions: none) ERROR: No matching distribution found for Cython