У меня есть instream, который принимает необработанные двоичные данные с Bluetooth на телефоне 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'ing:
09 15 D0 0D 17 0D 0A 06 08 07
Ну, я думал, что хмм 0А что-то вводит 0D, чтобы сделать (CRLF), но это не происходит при каждом 0А. Я могу написать ту же программу на C #, и этого не происходит вообще. Так какие-нибудь идеи или помощь?
При дальнейшем исследовании я обнаружил, что это происходит, когда входные данные равны 17 0A, а файл показывает 17 0D 0A.