【问题标题】:What folder should I store text files?我应该存储文本文件的文件夹是什么?
【发布时间】:2014-11-16 09:28:09
【问题描述】:

我在/src/com.example.myapp/ 有我的课程,我也有一条短信mytext.txt

但是,当我引用 static File f = new File("mytext.txt")); 时,它找不到它,即使该文件与该类位于同一目录中。

我需要做什么?它实际在哪个目录中查找?

资产是只读的。我需要一个可以读取和更新文本文件的地方。

【问题讨论】:

标签: java android


【解决方案1】:

使用assets 文件夹。

这是一个例子......

Loading array from a text file in assets folder (Android)

您在根项目文件夹中创建assets 文件夹,然后将文件放入其中。一旦它在那里,您可以通过以下方式访问:

getAssets().open("file.txt");

getAssets 方法是您的活动/上下文的一部分。上下文承载了有关您的应用的大量信息。

如果您不在 Activity 中,您可以将 Context 传递给您的班级并使用它:

context.getAssets().open("file.txt");

【讨论】:

  • 如何导入?
  • @Kick - 我编辑了我的回复。并感谢您的警告/建议!
  • 我不是在 Activity 类中工作,而是在一个我为读写而设计的类中工作。我应该导入什么?
  • 我编辑了我的答案。 Activity 扩展了 Context,因此您需要应用的 Context。
  • 哦,这是只读的。我需要更新这个文件。 stackoverflow.com/questions/10562904/is-asset-folder-read-only
【解决方案2】:

如果你想要EDIT模式的文件,你可以use Internal/External Storage

那么你可以读作:

String filePath = context.getFilesDir().getAbsolutePath();  //returns current directory.
File file = new File(filePath, fileName);
try {
    BufferedReader br = new BufferedReader(new FileReader(file));   
    while ((line = br.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
}
catch (IOException e) {

}
return text.toString(); //the output text from file.

你甚至可以写入这个文件:

String filename = "myfile";
String string = "ur data";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

希望对你有所帮助ツ

【讨论】:

    【解决方案3】:

    使用assets directory

    资产/

    这是空的。您可以使用它来存储原始资产文件。您在此处保存的文件将按原样编译为 .apk 文件,并保留原始文件名。您可以像使用 URI 的典型文件系统一样导航此目录,并使用 AssetManager 将文件作为字节流读取。例如,这是放置纹理和游戏数据的好位置。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2012-12-27
    • 2012-03-29
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多