Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不覆盖文件的情况下在文件中写入字节_Android_File_Io - Fatal编程技术网

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