当前位置: 首页 > 知识库问答 >
问题:

保存在内部存储器中的文件未被保留

公孙棋
2023-03-14

我正在尝试将一个xml文件保存到Android的内部存储中。但是,该文件没有得到保留。每次我重新启动模拟器时,该文件都会是空的。只有当我在应用程序中手动选择向其写入内容时,该文件才会被写入内容。然后,如果我关闭应用程序或其他什么,文件内容会被保留。但是,当我关闭模拟器时,文件会在那里,但是空的。

因此,我不确定我是否正确地保存了它。

请看看我的代码,也许它有问题,或者它与我的Android模拟器的一些设置。

public static void store(Context c, String filename, int width, int height, int rooms, int expected_partiters, BSPNode root, Cells cells, int[][] dists, int startX, int startY)
{
     try {

            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.newDocument();


            // root elements
            storeMaze(width, height, rooms, expected_partiters, root, cells, dists, startX, startY, doc);

            String serializedDoc = MazeFileWriter.getStringFromDoc(doc);
            try {
                FileOutputStream fos = c.openFileOutput("data_test.xml", Context.MODE_PRIVATE);
                fos.write(serializedDoc.getBytes());
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

     } catch (ParserConfigurationException pce) {
         pce.printStackTrace();
     }
}

static String getStringFromDoc(org.w3c.dom.Document doc) {
    try
    {
       DOMSource domSource = new DOMSource(doc);
       StringWriter writer = new StringWriter();
       StreamResult result = new StreamResult(writer);
       TransformerFactory tf = TransformerFactory.newInstance();
       Transformer transformer = tf.newTransformer();
       transformer.transform(domSource, result);
       writer.flush();
       return writer.toString();
    }
    catch(TransformerException ex)
    {
       ex.printStackTrace();
       return null;
    }
}

我是Android的初学者,所以任何建议都很感激!

共有1个答案

施俊驰
2023-03-14

如果我正确理解您的代码,您正在读取部分使用StringWriter。我认为您需要一个StringReader。

如果这不是你想做的(阅读),我可以看得更远,这正是吸引我眼球的地方。

 类似资料:
  • 如果我在内部存储中保存一个名为“picture.jpg”的位图,然后再执行一些步骤,我也保存另一个名为“picture.jpg”的位图,然后会发生什么?第二个位图会覆盖第一个位图,还是有两个位图同名?

  • 我正在制作一个soundboard应用程序,当长按按钮1时,我需要共享sound1。我可以用以下代码创建共享菜单: 我可以与whatsapp和Google Drive完美共享音频文件,但其他应用程序不起作用。我听说您必须将文件复制到外部存储,并从那里共享它们。我已经搜索了将近两天,但我找不到这样做的方法。Stack上的其他文章也帮不了我:/ 如何在外部存储器中创建目录,将文件(sound1.ogg

  • 问题是,即使我能够成功发送文档,其他用户也可以在线签名,但当我转到docusign配置文件时,发送的文档是不可见的。如果我不使用代表发送功能,文档连同状态,即out for signature或Signated将显示在我的配置文件中。这是怎么回事?谢谢

  • 我正在使用Yii2和Kartik的FileInput扩展。我在保存到目录时遇到问题。我正在使用yii高级模板,并使用gii生成CRUD代码。我现在正在编辑它。 当我保存它时,它拒绝保存并显示“请上传文件”消息。 将保存的文件. doc和. pdf大部分。 如果我在模型中设置'skipOnEmpty=True',它将保存表单而不是文件。 mysql表上的数据类型设置为VARCHAR,因为我只想保存其

  • 我的应用程序将一些文件保存到设备上的数据/数据文件夹中。保存远程文件后,我会处理这些文件,并将它们复制到其他文件夹中。在之前测试过的所有设备上,All都能正常工作,但在galaxy s3上会生成空指针异常。似乎我不被允许在那个文件夹上写或处理文件!但只有新的星系s3!我也无法使用EclipseDDMS文件浏览器在数据文件夹中找到任何文件,而在模拟器(相同的android版本)中,我可以正确查看所有