【问题标题】:how to write bytes in a file without overwriting it如何在文件中写入字节而不覆盖它
【发布时间】:2010-12-31 08:12:43
【问题描述】:

我正在从服务器获取字节块,我需要将它们写入文件而不覆盖旧块。我怎样才能做到这一点? 我是这样做的..

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

我的这个方法将文件名和字节块作为参数。每当我从服务器获取新块时,都会调用此方法。通过这种方法,我无法将所有块写入文件。

任何帮助将不胜感激。 谢谢

【问题讨论】:

    标签: android file io


    【解决方案1】:

    PrintWriter 用于在文件中写入文本,不支持写入原始字节。 FileOutputStream 提供您所需的一切:

    FileOutputStream os = new FileOutputStream(filePath, true);
    os.write(mapBytes);
    os.close();
    

    【讨论】:

      【解决方案2】:

      使用pw.append( bytes );

      使用 FileOutputStream 追加构造函数FileOutputStream(File file, boolean append)

      使用构造方法可能会稍微高效一些,因为文件可以在追加模式下打开,而不必每次都寻找到结尾。但是,我不确定这一点,因此如果这对您很重要,您应该在自己的环境中进行测试。

      另外,不要忽视 kgiannakakis 的建议。他是正确的,PrintWriter 需要文本而不是二进制数据。

      【讨论】:

        猜你喜欢
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2020-03-28
        • 2013-11-04
        • 1970-01-01
        • 2012-06-18
        相关资源
        最近更新 更多