我一直致力于一个小应用程序,让我的朋友和我创建自己的虚拟抽认卡。这些卡排列在映射的文本文件中,可通过 Spinner -s访问。应用程序的用户定义他们自己的微调器,从而定义研究类别。
首次启动活动时,我使用扫描程序从名为 SpinnersTXT.txt 的文本文件中读取,我逐行浏览,并接受Name-Type-Elements的严格语法,实例化文件中定义的 Spinner 。但这并不完全重要。我实际上只是使用扫描仪
从文件中读入如果稍后添加新的 Spinner ,则会将其信息添加到文本文件中。当我运行我的代码时,我没有遇到任何与我的异常处理所涵盖的 not 相关的错误,但我知道新的Spinner-info没有被添加到TXT文件和/或我的扫描程序因为没有添加Spinner对象而没有访问正确的文件(我确实记得 addView 调用父 ScrollView )。
- >首先,我必须询问这是否是内部存储的使用方式,我想从我的应用程序中访问和编辑此文件,使用此展示位置,我可以吗?
除此之外,这里是我尝试访问该文件的代码,如果它不存在则创建它。我从另一个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的新手,但即使在阅读了我的初学者书籍的章节后,我仍然看到很多形式的输入和输出我很容易被吓到......但我觉得我必须使用Scanner作为其nextLine()方法尽管大多数例子都没有触及扫描仪。
最后,这里是我尝试写入该文件的代码(如果不存在则由我的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和语言的细微差别的情况下。谢谢大家。
答案 0 :(得分:1)
正如您在类似问题中所解释的那样,您不能将文件放在源项目下的任意位置,并希望它们出现在设备上。您可以使用资产等机制存储数据,但在运行时它将是只读的。要具有可修改的初始化数据,必须将其打包为只读形式,然后将其复制到文件系统以创建可修改的版本。或者您可以使用各种方法在运行时下载它。
这里详细介绍了许多问题,特别是有关数据库的问题,但其中说明的解决方案基本上适用于任何类型的文件。