我有一个静态流从Android 2.2手机上的蓝牙接收原始二进制数据。进入的数据进入缓冲区1024的大小。我读取()数据,然后把它写入文件。我通过FTP将该文件发送到我的电脑。当ftp'ing一段时间插入一个额外的字符时,我注意到了一个令人不安的模式。所以我先将缓冲区打印到LogCat中,注意到这个字符不在那里。这是我读的写代码。FTP增加了额外的字符
FTPClient con = new FTPClient();
File file = new File(Environment.getExternalStorageDirectory() + "/ftp/new/" + "testdata.bin");
try {
con.connect("someIPAddress");
if (con.login("anonymous", "[email protected]")) {
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
嗯,我认为嗯0A是注入0D来制造(CRLF),但它不会在每个0A发生。我可以用C#编写相同的程序,而这完全不会发生。那么任何想法或帮助?
在进一步的调查中,我发现它发生时,数据进入是17 0A和文件显示17 0D 0A。
不是一个真正的答案,而是一个声明,你有解决方案的上述代码? – JPM