1

我知道这个问题之前可能已经被问过很多次,但我找不到满足我需求的例子。我之前在 StackOverflow 上问过几次问题,偶尔也有绅士让我“去看看书”或“做一些研究”,然后再在这里寻求帮助。好吧,我已经这样做了,但我没有找到足够的信息 - 所以如果你是这些人中的一员,如果你能指出我的资源,我将非常感激,这样我就知道在哪里挖掘。

无论如何,我终于完成了一个计算带宽、链接速度和设备其他属性的应用程序。带宽每 5 秒刷新一次,链路速度和数据连接每秒刷新一次。目前,信息显示在屏幕上。

我正在尝试创建一个计划更大的项目,该项目涉及另一台计算机(指挥中心)监视设备的连接性,为此,设备必须将这些值保存到可以通过 SSH 连接的文本文件中指挥中心。这个问题是微不足道的;如何将数据写入文本文件?我知道如何在 Java 中做到这一点;我可以使用 FileOutputStream,或者结合 FileWriter + PrintWriter 来达到类似的效果。但是,我不知道目录在 Android 中是如何工作的,并且我不确定在 Android 中写入文件时是否应该注意任何预防措施。我注意到我需要说明以下内容:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在清单中。还有什么我应该做的吗?另外,根据我的需要,任何人都可以推荐一种有效写入输出的方法吗?FileOutputStream 是否可行,因为它似乎相当容易?我应该以特定方式标记我的数据,例如用选项卡拆分它吗?我是编程新手,我仍在学习,但我希望能得到一些帮助或有用的阅读建议。

这个可能是首选阅读的网站目前已关闭。如果有人可以提供一些示例片段,将不胜感激。

4

2 回答 2

1

Android 目录的工作方式类似于 PC 目录,唯一的例外是您可以拥有不同的“根”目录,例如内部或外部存储。更令人困惑的是,有些手机有一个内部 SD 卡 - 所以写入 SD 卡可能不是外部 SD 卡。当您编写文本文件时,您可能想要灵活一些 - 如果用户没有 SD 卡(外部存储),那么您需要更改您的游戏计划。有关检测 SD 卡的更多信息,请参阅此SO 帖子。

至于文本文件的实际编写,这很简单

编辑:您应该使用getExternalFilesDir(null)来获取您的应用程序的绝对外部路径。您必须在活动内部才能调用它(或有权访问Context对象)。

   File file = new File(getExternalFilesDir(null), "stats.txt");
   try
   {
      BufferedWriter buf = new BufferedWriter(new FileWriter(file)); 
      buf.append(text);
      buf.newLine();
      buf.close();
   }
   catch (IOException e)
   {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }

请注意,在 Android 中进行文件 I/O 的方法有很多种,这只是其中一种。 是另一篇详细介绍该问题的博客文章。

要存储您的数据,我会做以下两件事之一:

首先,您可以将数据存储为 CSV(逗号分隔值)字符串,如下所示:

12,345,6,789

然后,当您解析它时,您知道第一个数字是带宽,第二个是速度等。我宁愿使用逗号作为分隔符而不是制表符,因为我不喜欢使用空格作为分隔符。

其次,您可以使用键/值对设置,如下所示:

bandwidth=12
speed=34

然后在您的解析代码中,您可以拆分=字符。第一个字符串是键,第二个是值。

于 2013-07-11T19:23:52.070 回答
0

在撰写本文时,您的链接似乎是针对不同语言的,并且该版本似乎已关闭。英文版还在更新中,可以在这里找到:http: //developer.android.com/training/basics/data-storage/files.html

同时,我相信您必须访问包含文本文件的原始目录(如果您还没有原始目录,请在 res 目录中创建一个原始目录并将文本文件放在那里)。访问文本文件的代码是getResources().openRawResource(resourceName)(如本问题所述:https ://stackoverflow.com/a/2856501/555544 )-我相信resourceName是您的 R 文件中所述的文本文件的 ID(例如:R.raw.foo)-这就是 Android 如何在您的目录中查找文件的方式。然后,像往常一样进行文件 I/O。

让我知道事情的进展——我自己也在学习 Android,但希望这指向正确的方向。

于 2013-07-11T18:18:11.267 回答