Android:传输到设备的文件中的额外字节

时间:2012-03-20 21:13:42

标签: android file-io

所以,我有一个简单的Android应用程序,使用套接字连接到Java Server应用程序。 具体来说,我希望能够将文件从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应用程序中使用此代码时出现问题。 (注意:我在标准Java应用程序中使用标准FileOutputStream而不是

    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));

但我无法弄明白。

关于我做错的任何建议都会有所帮助。

提前谢谢

0 个答案:

没有答案