Итак, у меня есть простое приложение для Android, которое подключается к приложению Java Server с помощью сокетов.В частности, я хочу иметь возможность отправить файл из приложения «Сервер» в приложение Android, а затем сохранить этот файл во внутренней памяти на устройстве.Основой кода сервера для передачи файла является:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(System.getProperty("user.home"), "text.txt")));
BufferedOutputStream bos = new BufferedOutputStream(clientSocket.getOutputStream());
byte buffer[] = new byte[1024];
int read;
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer, 0, read);
}
bos.flush();
bos.close();
, а код клиента для получения файла выглядит следующим образом:
BufferedInputStream bis = new BufferedInputStream(clientSocket.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(openFileOutput("text.txt", Context.MODE_PRIVATE));
byte buffer[] = new byte[1024];
int read;
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer, 0, read);
}
bos.flush();
bos.close();
Код работает нормально, когдакод клиента находится в стандартном приложении Java, то есть файл успешно отправляется с сервера на клиент.Проблема возникает, когда я использую этот код в приложении для Android.(Примечание: я использую стандартный FileOutputStream в стандартном приложении Java вместо строки
openFileOutput("text.txt", Context.MODE_PRIVATE))
выше).
Например, файл, который я передаю, представляет собой простой UTF-8текстовый файл, который содержит единственную строку
This is a text file.
Однако, когда я извлекаю этот файл, я скопировал его в эмулятор из папки "/ data / data // files" на эмуляторе.дополнительные пару байтов в верхней части файла, поэтому содержимое теперь
¨ÌThis is a text file.
Я понятия не имею, почему это происходит, и это поставило меня в тупик.Я думаю, что проблема может быть связана со строкой:
BufferedOutputStream bos = new BufferedOutputStream(openFileOutput("text.txt", Context.MODE_PRIVATE));
, но я не могу понять это.
Любые предложения относительно того, что я делаю неправильно, были бы наиболее полезными.
Заранее спасибо