Java 在Android中连续写入文本文件

Java 在Android中连续写入文本文件,java,android,file-io,tokenize,Java,Android,File Io,Tokenize,我知道这个问题以前可能被问过很多次,但我找不到一个符合我需要的例子。我以前曾多次就StackOverflow提出过问题,偶尔会有一些男士在这里寻求帮助之前要求我“去读一本书”或“做一些研究”。嗯,我已经这样做了,但我没有找到足够的信息-所以如果你是这些人中的一员,如果你能给我指一个资源,让我知道在哪里挖掘,我会非常感激 无论如何,我终于完成了一个应用程序的编写,该应用程序可以计算设备的带宽、链接速度和其他属性。带宽每5秒刷新一次,链路速度和数据连接每秒刷新一次。目前,信息显示在屏幕上 我正在尝试

我知道这个问题以前可能被问过很多次,但我找不到一个符合我需要的例子。我以前曾多次就StackOverflow提出过问题,偶尔会有一些男士在这里寻求帮助之前要求我“去读一本书”或“做一些研究”。嗯,我已经这样做了,但我没有找到足够的信息-所以如果你是这些人中的一员,如果你能给我指一个资源,让我知道在哪里挖掘,我会非常感激

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

我正在尝试创建一个更大的计划项目,该项目涉及另一台计算机(一个命令中心)来监控设备的连接,要做到这一点,设备必须将这些值保存到一个文本文件中,该文件可以由命令中心进行SSH。这个问题无关紧要;如何将数据写入文本文件?我知道如何在Java中实现这一点;我可以使用FileOutputStream,或者将FileWriter和PrintWriter结合使用来实现类似的效果。然而,我不知道Android中的目录是如何工作的,我也不确定在Android中写入文件时是否有任何预防措施。我注意到我需要陈述如下内容:

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

在舱单上。还有什么我应该做的吗?另外,根据我的需要,有人能推荐一种有效写入输出的方法吗?FileOutputStream看起来相当简单,这是一条路吗?我应该用一种特定的方式标记我的数据,比如用一个标签拆分它吗?我是编程新手,我还在学习,但我希望能得到一些有用阅读资料的帮助或建议


,这大概是去阅读,目前正在下降。如果有人能为我提供一些示例片段,我将不胜感激。

在撰写本文时,您的链接似乎是针对另一种语言的,而该版本似乎已关闭。英文版仍在更新中,可在此处找到:

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


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

在撰写本文时,您的链接似乎是针对另一种语言的,而该版本似乎已关闭。英文版仍在更新中,可在此处找到:

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


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

Android目录的工作原理与PC目录类似,唯一的例外是您可以拥有不同的“根”目录,如内部或外部存储。更让人困惑的是,有些手机有一个内置SD卡,所以向SD卡写入数据可能不是外部SD卡。在编写文本文件时,您可能希望灵活一些——如果用户没有SD卡(外部存储),那么您需要更改游戏计划。有关检测SD卡的更多信息,请参阅SO post

至于文本文件的实际写入,它非常漂亮:

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

请注意,在Android中有几十种方法可以进行文件I/O,这只是其中之一。这是另一篇详细阐述这个问题的博客文章

要存储您的数据,我将执行以下两种操作之一:

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

12,345,6,789
bandwidth=12
speed=34
当你解析它时,你知道第一个数字是带宽,第二个是速度,等等。我宁愿用逗号作为分隔符,而不是制表符,因为我不太喜欢用空格作为分隔符

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

12,345,6,789
bandwidth=12
speed=34

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

Android目录的工作原理与PC目录类似,唯一的例外是您可以拥有不同的“根”目录,例如内部或外部存储。更让人困惑的是,有些手机有一个内置SD卡,所以向SD卡写入数据可能不是外部SD卡。在编写文本文件时,您可能希望灵活一些——如果用户没有SD卡(外部存储),那么您需要更改游戏计划。有关检测SD卡的更多信息,请参阅SO post

至于文本文件的实际写入,它非常漂亮:

编辑:您应该使用
getExternalFilesDir(null)
来获取