Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 存储txt文件_Android_Storage_Assets - Fatal编程技术网

Android 存储txt文件

Android 存储txt文件,android,storage,assets,Android,Storage,Assets,我正在开发一种杂志应用程序,其中包含许多txt文件,我从中读取文本(只读不写),我有点困惑,我已经阅读了有关文件存储的文档,但似乎仍然没有找到正确的方法来存储我的txt文件。这些文件应该在资产中吗?是否可以在资产中设置文件夹?如果是,我如何访问这些文件夹 res/raw将是放置它们的好地方。如果将名为“article.txt”的文本文件放置在原始资源文件夹中,则首先将该文件放入如下输入流中(请注意,“ctx”是活动继承的上下文): 然后将InputStream转换为字符串。这可以通过大约1000

我正在开发一种杂志应用程序,其中包含许多txt文件,我从中读取文本(只读不写),我有点困惑,我已经阅读了有关文件存储的文档,但似乎仍然没有找到正确的方法来存储我的txt文件。这些文件应该在资产中吗?是否可以在资产中设置文件夹?如果是,我如何访问这些文件夹

res/raw将是放置它们的好地方。如果将名为“article.txt”的文本文件放置在原始资源文件夹中,则首先将该文件放入如下输入流中(请注意,“ctx”是活动继承的上下文):

然后将InputStream转换为字符串。这可以通过大约1000种不同的方式实现。这里有一个方法:

InputStreamReader inputreader = new InputStreamReader(inputStream);

BufferedReader buffreader = new BufferedReader(inputreader);
String line;
StringBuilder text = new StringBuilder();

try {
    while (( line = buffreader.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
} catch (IOException e) {
    return null;
}

String fileContentsStr = text.toString();
下面是一个完全有效的方法(使用上述转换技术)将原始文件夹中的文本文件转换为字符串。这是我从这篇文章中得到的

仍然使用“article.txt”,您可以从如下活动调用此方法:

readRawTextFile(this, R.raw.article);

谢谢您的回答,原始文件夹和资产文件夹有什么区别?是否可以为它们添加文件夹层次结构?本文将帮助您了解Android项目的项目结构。无法将子文件夹添加到任何res文件夹,这包括value、drawable、raw和其他文件夹。但是,您可以在资源中添加子文件夹。我提供的答案是针对原始资源文件的,但也有从资产文件夹和资产子文件夹中读取.txt文件的方法。是的,我知道,谢谢,问题不在于读取,而在于如何更好地读取许多txt文件?未经加工的资产没关系吧?哪一个对你来说更容易。我想说,如果你有10-20多个,使用资产并将它们分组到子文件夹中。
public static String readRawTextFile(Context ctx, int resId)
{
  InputStream inputStream = ctx.getResources().openRawResource(resId);

  InputStreamReader inputreader = new InputStreamReader(inputStream);
  BufferedReader buffreader = new BufferedReader(inputreader);
  String line;
  StringBuilder text = new StringBuilder();

  try {
    while (( line = buffreader.readLine()) != null) {
      text.append(line);
      text.append('\n');
    }
  } catch (IOException e) {
    return null;
  }
  return text.toString();
}
readRawTextFile(this, R.raw.article);