java - Android 文件 IO : I and O Accessing Different Files

标签 java android file io internal-storage

我一直在开发一个小应用程序,让我和我的 friend 们可以创建我们自己的虚拟抽认卡。这些卡片排列在映射到可通过 Spinner -s 访问的文本文件中。该应用程序的用户定义了他们自己的旋转器,从而定义了研究类别。

Activity 刚开始时,我使用扫描仪从名为SpinnersTXT.txt 的文本文件中读取,我逐行运行它,然后接受Name-Type-Elements 的严格语法,实例化文件中定义的 Spinner。但这并不完全重要。我实际上只是使用扫描仪

从文件中读入

如果稍后添加一个新的 Spinner,其信息将添加到文本文件中。当我运行我的代码时,我没有遇到与我的异常处理涵盖的任何内容相关的错误,但我知道新的 Spinner-info 没有被添加到 TXT 文件,和/或我的 Scanner没有访问正确的文件,因为没有添加 Spinner 对象(我确实记得 addView 对父 ScrollView 的调用)。

Here is my file path setup, with the folder Saves containing my initially empty txt file

--> 所以首先我必须问这是否是内部存储的使用方式,我想从我的应用程序中访问和编辑这个文件,使用这个位置,可以吗?

除此之外,这是我尝试访问该文件并在文件不存在时创建它的代码。我从另一个 stackoverflow 问题(我做过研究)中得出这个,但希望得到一些验证。

try{
        fileProcessorScanner = new Scanner("Saves/SpinnersTXT.txt");

    }catch(Exception e){
        e.printStackTrace();
        File path = new File(getFilesDir(),"Saves");
        path.mkdirs();
        File SpinnersTXT = new File(path,"SpinnersTXT.txt");
    }

--> 这段代码会成功获取文件吗?如果文件不存在,catch 会创建文件吗?我很抱歉我是 IO 的新手,但即使在阅读了初学者书籍的章节后,我仍然看到如此多的输入和输出形式,我很容易感到困惑......但我觉得我必须为其 nextLine() 方法使用 Scanner ,尽管大多数示例甚至不接触扫描仪。

最后是我尝试写入该文件的代码(如果不存在则由我的 catch 创建):

outGoingSpinners = openFileOutput("SpinnersTXT.txt",MODE_WORLD_READABLE);
        outGoingSpinners.write(NEW_SPIN_OPEN.getBytes());
        outGoingSpinners.write(tempNewSpinnerName.getBytes());
        outGoingSpinners.write(tempNewSpinnerType.getBytes());
        outGoingSpinners.write(tempNewSpinnerInitializer.getBytes());
        outGoingSpinners.write(NEW_SPIN_CLOSE.getBytes());
        outGoingSpinners.close();

--> 这会将我的信息保存到与上面相同的文本文件中吗?我的转义序列会得到尊重和保留吗?

我衷心感谢所有帮助。你们所有人都非常有洞察力,这个社区让我的许多梦想成为现实。有时我会迷失方向,尤其是在面对各种形式的 IO 和语言的细微差别时。谢谢大家。

最佳答案

正如您在类似问题中所解释的那样,您不能将文件放在源项目下的任意位置并期望它们出现在设备上。您可以使用 Assets 等机制存储数据,但在运行时它将是只读的。要拥有可修改的初始化数据,您必须将其打包为只读形式,然后将其复制到文件系统以创建可修改的版本。或者您可以使用各种方法在运行时下载它。

这里的许多问题都详细介绍了这一点,尤其是关于数据库的问题,但是那里说明的解决方案基本上适用于任何类型的文件。

关于java - Android 文件 IO : I and O Accessing Different Files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22270687/

相关文章:

java - Secure Webservice 在 JDev 11.1.1.2 (WL Server 10.3.2) 中有效,但在 JDev 11.1.1.6 (WL Server 10.3.5) 中无效

java - java中动态压缩和下载zip文件

java - 将 ArrayList 的 LinkedList 指针转换为 String

android - 在后台运行 WebView

linux - rsync:删除的文件重新出现/传输的文件在一段时间后消失

image - 如何在 plonesites 之间同步内容(图像和文件)

java - 正则表达式验证未触发 Spring Boot Controller 中的错误

java - 相机 Intent ACTION_IMAGE_CAPTURE 并放置额外数据

Android显示Toast即使应用程序已关闭

python - 使用 plone.api 创建文件的脚本 Python 在设置文件时出现错误 WrongType