java - 使用资源管理器打开文本文件并将其分配给输入流

标签 java android inputstream android-assetmanager

基本上,我认为这可能是一个项目结构问题,因为我不确定将文本文件放在哪里,我创建了一个目录 asset 并在其中放置了一个名为 texts 的文件夹,并在其中放置了 myawesometext.txt。

我得到的错误是被调用的异常,它找不到文件。

我认为这可能与权限有关,但找不到与之相关的权限,因为它不是外部存储。

我的问题是,如果我有文件并且正在运行应用程序,我应该在结构中的哪里创建一个 Assets 文件夹以供读取,我已经仔细检查了拼写(没有拼写错误),它只是捕获了我的异常。

类别:

public class AssetsTest extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView textView = new TextView(this);
    setContentView(textView);
    AssetManager assetManager = getAssets();
    InputStream inputStream = null;
    try {
        inputStream = assetManager.open("texts/myawesometext");
        String text = loadTextFile(inputStream);
        textView.setText(text);
    } catch (IOException e) { textView.setText("Couldn't load file");
    } finally {
        if (inputStream != null)
            try { inputStream.close();
            } catch (IOException e) { textView.setText("Couldn't close file");
            } }
}
    public String loadTextFile(InputStream inputStream) throws IOException { ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); byte[] bytes = new byte[4096];
        int len = 0;
        while ((len = inputStream.read(bytes)) > 0) byteStream.write(bytes, 0, len);
        return new String(byteStream.toByteArray(), "UTF8"); }
}

location of file

提前致谢... 本

最佳答案

您的 Assets 文件夹位置不正确,您的代码也不正确。请按照以下步骤操作。

首先,将当前的 assets 文件夹移动到 src/main

screenshot

其次,将代码中的这一行更改为

inputStream = assetManager.open("texts/myawesometext");

inputStream = assetManager.open("texts/myawesometext.txt");

关于java - 使用资源管理器打开文本文件并将其分配给输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54960961/

相关文章:

java - Android:OnItemCLickListener 在 ListView 中不工作

java - 如何获取非最终ArrayList的元素?

java - 基本接口(interface)说明

android - JNI Android中的分配和释放问题

java - 为什么套接字仅发送1KB(425B)数据?

java - 为什么 Integer.parseInt 在看似有效的输入上抛出 NumberFormatException?

java - 用 Java 流畅地读取进程的输出

java - 跨开发人员共享 Maven 存储库

java - 是否可以从 Android 中的远程数据库填充 HTML 表?

java - 应用启动时首次显示 Android 应用教程页面