7

我的代码如下::

Scanner sc = null;
try {
    sc = new Scanner(new File("assets/mainmenu/readSourceFile.txt"));
} catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    System.out.println(e1.toString());
    e1.printStackTrace();
}

然后,logcat 显示异常java.io.FileNotFoundException

如何找到我的文件?我试过了

sc = new Scanner(new File("mainmenu/readSourceFile.txt"));

但是,它仍然抛出FilenotFoundException

我的文件在文件夹 assets/mainmenu/readSourceFile.txt

我试过这个::

private InputStream is;
try {
        is = this.getResources().getAssets().open("mainmenu/readSourceFile.txt");
    } catch (IOException e) {
        e.toString();
    }

我使用 getAssets 访问 android 中的资产文件。但是,如果我使用,我怎么能假设读取文本文件InputStream

4

3 回答 3

1

你试试这个......希望它会奏效

sc = new Scanner(new File("file:///android_asset/mainmenu/readSourceFile.txt");

编辑试试这个

AssetFileDescriptor descriptor = getAssets().openFd("mainmenu/readSourceFile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

从这里复制 资产文件夹路径

于 2012-12-21T04:15:48.457 回答
0

您无法访问assetsAndroid 应用程序的文件夹,就好像它们是文件系统上的常规文件一样(提示:它们不是)。相反,您需要在活动/应用程序上下文中使用AssetManager.CallgetAssets()来获取AssetManager.

一旦你有了这个,你就可以使用open("mainmenu/readSourceFile.txt")来获得一个InputStream.

您现在可以InputStream像阅读其他任何内容一样阅读此内容。Apache Commons IO是一个用于处理输入和输出流的优秀库。根据您想要获取数据的方式,您可以尝试:

  • 将整个文件读入一个字符串:

    try {
        String contents = IOUtils.toString(in);
    } finally {
        IOUtils.closeQuietly(in);
    }
    
  • 将整个文件读入字符串列表,每行一个:

    try {
        List<String> lines = IOUtils.readLines(in);
    } finally {
        IOUtils.closeQuietly(in);
    }
    
  • 一次遍历文件一行:

    try {
        LineIterator it = IOUtils.lineIterator(in, "UTF-8");
        while (it.hasNext()) {
            String line = it.nextLine();
            // do something with line
        }
    } finally {
        IOUtils.closeQuietly(in);
    }
    
于 2012-12-21T04:23:43.343 回答
0

我遇到过同样的问题。我注意到该文件不应包含层次结构。如果将来有人遇到同样的问题,这对我有用。`

    InputStream is=null;

    try {
        is=activity.getAssets().open("fileInAssets.dat");
    } catch (IOException e1) {
        Log.e(TAG, "Erro while openning hosts file.");
        e1.printStackTrace();
    }

`

于 2013-04-30T15:13:27.053 回答