java - 在 Try/Catch 中初始化

标签 java android

我在编写应用程序时遇到了相当大的障碍。这是我的问题:

我正在尝试像这样初始化文件输入流:

FileInputStream fis
fis = openFileInput(selectedFile);

然后将这 1 行放在后面:

byte[] input = new byte[fis.available()];

问题是两段代码都需要 try/catch 语句,而第二个 block 无法识别 fis,因为它是在 try/catch 中初始化的。这是我的代码:

private void openFile(String selectedFile) {
        String value = "";
        FileInputStream fis;
        try {
            fis = openFileInput(selectedFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        try {
            byte[] input = new byte[fis.available()];
        } catch (IOException e) {
            e.printStackTrace();
        }

我该怎么办? (提前致谢)

最佳答案

在这种情况下,最好的方法是根本不捕获 IOException。

private void openFile(String selectedFile) throws IOException {
        FileInputStream fis =  openFileInput(selectedFile);
        byte[] input = new byte[fis.available()];

收到 FileNotFoundException 后继续没有意义

关于java - 在 Try/Catch 中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868260/

相关文章:

java - 没有java经验。通过 REST API 客户端摸索我的方式

java - 尝试安装 eclipse,但我得到 "Java was started but returned exit code = 1"

java - C 和 JNI 数组列表

java.lang.NoClassDefFoundError : org. apache.commons.lang3.StringUtils

java - 使用正则表达式查找第一次出现

java - Jersey 中的查询参数

java - JPA 查询 "Set does NOT contain a certain item"

Android WebView - 重置 HTTP session

android - 如何使用 adb 卸载 chainfire3d? (安卓)

java - Sqlite 数据库 onUpgrade() 没有被调用