【问题标题】:Where to store files in an Android project to be accessed by the BufferedReader?BufferedReader 可以访问的 Android 项目中的文件存储在哪里?
【发布时间】:2014-07-30 16:50:05
【问题描述】:

我有一个需要访问的文件(更具体地说是 .txt 文件)。我尝试创建自己的资源文件夹,然后使用 BufferedReader 访问它,但出现空指针错误。

所以问题:

存储此文件并仍然使用 BufferedReader 访问它的最佳方式是哪里?

【问题讨论】:

  • 如果您没有资产目录,请在与 res 目录相同的层次结构中创建它

标签: java android eclipse file bufferedreader


【解决方案1】:

把它放在 res/raw 文件夹中。

然后你可以这样做:

BufferedReader br = new BufferedReader(new InputStream(context.openRawResources(R.raw.<filename>)));

【讨论】:

    【解决方案2】:

    对于需要用 apk 打包的文件,可以使用 Asset,查看project structure docs

    对于稍后下载的文件,我建议使用外部存储。

    【讨论】:

    【解决方案3】:

    在 Android 中访问文件的三种方式:

    1. 来自资产,即 Raw 文件夹,但您的 apk 文件很大,因为文件与您的 apk 一起定位或导出。
    2. 来自外部存储,即您需要写入权限才能从 sdcard 访问。
    3. 互联网您需要互联网权限才能访问该文件。

    以上 3 种方法都可以使用 BufferedReader,您需要将输入流与 BufferedReader 链接以读取指定字节的数据,而不是每个字节读取 1 个字节。

    我的 sn-p 代码:

    File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "vishnu.txt");
    try {
        FileInputStream fi = new FileInputStream(f);
        BufferedReader myReader = new BufferedReader(new InputStreamReader(fi));
        String temp = myReader.readLine();
        Toast.makeText(getBaseContext(), temp, Toast.LENGTH_LONG).show();
        myReader.close();
        fi.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2020-10-15
      相关资源
      最近更新 更多