我从服务器获取大块字节,我需要在文件中写入它们而不覆盖旧块。我怎样才能做到这一点? 我这样做..
private void createMapFile(String fileName, byte mapBytes[]) throws IOException
{
File filePath = new File(Environment.getExternalStorageDirectory()+"/map/"+fileName);
PrintWriter pw = new PrintWriter(new FileOutputStream(filePath, true));
pw.print(mapBytes);
pw.flush();
pw.close(); }
我的this方法将文件名和字节块作为参数。任何时候我从服务器获得新的块,这个方法被调用。通过这种方法,我无法在文件中写入所有块。
任何帮助都会受到赞赏。 感谢
答案 0 :(得分:4)
PrintWriter用于在文件中写入文本,不支持写入原始字节。 FileOutputStream提供您需要的一切:
FileOutputStream os = new FileOutputStream(filePath, true);
os.write(mapBytes);
os.close();
答案 1 :(得分:1)
使用pw.append( bytes );
或
使用FileOutputStream附加构造函数FileOutputStream(File file, boolean append)
使用构造函数方法可能稍微有点效率,因为文件可以在追加模式下打开,而不必每次都寻求结束。但是,我不确定,所以你应该在你自己的环境中测试一下这对你来说是否重要。
另外,不要忽视kgiannakakis的建议。他是正确的,PrintWriter期望文本而不是二进制数据。