Android 如何在不覆盖文件的情况下在文件中写入字节
我正在从服务器获取字节块,我需要在不覆盖旧块的情况下将它们写入文件。我该怎么做? 我是这样做的Android 如何在不覆盖文件的情况下在文件中写入字节,android,file,io,Android,File,Io,我正在从服务器获取字节块,我需要在不覆盖旧块的情况下将它们写入文件。我该怎么做? 我是这样做的 private void createMapFile(String fileName, byte mapBytes[]) throws IOException { File filePath = new File(Environment.getExternalStorageDirectory()+"/map/"+fileName); PrintW
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(); }
我的这个方法以文件名和字节块作为参数。每当我从服务器获取新块时,就会调用此方法。通过这种方法,我无法将所有块写入文件中
任何帮助都将不胜感激。
谢谢使用pw.append(字节)代码>或
使用FileOutputStream附加构造函数FileOutputStream(文件文件,布尔附加)
使用构造函数方法可能会稍微有效一些,因为文件可以在append模式下打开,而不必每次都搜索到末尾。但是,我不确定这一点,所以如果这对您很重要,您应该在自己的环境中进行测试
此外,不要忽视Kgianakakis的建议。他正确地认为PrintWriter需要文本而不是二进制数据。使用pw.append(字节)代码>或
使用FileOutputStream附加构造函数FileOutputStream(文件文件,布尔附加)
使用构造函数方法可能会稍微有效一些,因为文件可以在append模式下打开,而不必每次都搜索到末尾。但是,我不确定这一点,所以如果这对您很重要,您应该在自己的环境中进行测试
此外,不要忽视Kgianakakis的建议。他正确地认为PrintWriter需要文本而不是二进制数据。PrintWriter用于在文件中写入文本,不支持写入原始字节。提供您所需的一切:
FileOutputStream os = new FileOutputStream(filePath, true);
os.write(mapBytes);
os.close();
PrintWriter用于在文件中写入文本,不支持写入原始字节。提供您所需的一切:
FileOutputStream os = new FileOutputStream(filePath, true);
os.write(mapBytes);
os.close();