Java文件输入流错误: "No such file or directory"

标签 java fileinputstream

我正在编写一个 java 代码来遍历 .sfo(SQL 和 Fortran 的组合)文件,并在文件中出现某些字符时删除它们。我在 64 位 Windows 7 机器上使用 Eclipse,如果这有什么区别的话。代码正在做我想做的事情,删除字符 block 之类的东西,但最后,在它给我输出后,它显示 “错误:没有这样的文件或目录。” 我不知道为什么;我引用的唯一外部文件是前面提到的 .sfo。该文件存在,并且我在代码中指定的文件路径是正确的。我有权限读取和写入该文件。 这是我的代码(或多或少;其中很多是重复的,所以我将删除一些不重要的内容):

绝对路径是

C:/Users/frencke/p4/frencke_LOHEPCE00294173/pcs/main/lib/gp/file.sfo.

是的,我对该文件拥有完全权限。

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class StringSplit {
    public static void main(String args[]) {
        try {
            ArrayList<String> arr = new ArrayList<String>();
            // Here I initialized a bunch of ArrayLists; nothing relevant
            ArrayList<String> arr26 = new ArrayList<String>();
            FileInputStream fstream = new FileInputStream(
                    "C:/Users/.../file.sfo");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            while ((strLine = br.readLine()) != null) {
                arr.add(strLine);
                String[] temp;
                String delimiter = "\\s+\\s+\\s+\\s+\\s+&\\s+";
                temp = strLine.split(delimiter);
                for (int i = 0; i < temp.length; i++)
                    arr2.add(temp[i]);
                // Here I did all of the removal of the various blocks of text
                String[] temp27;
                String delimiter27 = "\t9";
                String strLine27 = null;
                for (int i = 0; i < temp26.length; i++)
                    strLine27 = temp26[i];
                temp27 = strLine27.split(delimiter27);
                for (int i = 0; i < temp27.length; i++)
                    System.out.println(temp27[i]);
                in.close();
            }
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}

我再次收到的错误消息是: “错误:没有这样的文件或目录。” 如果有人知道为什么会发生这种情况,我很想听听;谢谢!

最佳答案

您将在 while 循环的第一次迭代结束时关闭 InputStream - 这会释放与流关联的所有系统资源。

当您尝试 readLine() 时,流已被释放,因此它显示“不存在此类文件”。

我认为您的意思是将 in.close() 放在循环之后,这应该可以工作。

关于Java文件输入流错误: "No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455451/

相关文章:

java - 如何在 Hibernate 中使用 setParameter

Java REST 响应值缺少拼写字符

java - 我该如何解决这个问题? java.io.IOException : Stream Closed

java - Java 查找文件中子字符串的数量

java - 在 Ubuntu 10.10 上使用 Android SDK 真的需要 Sun Java 吗?我更喜欢 OpenJDK

java - 在tomcat7上运行shell脚本

java - 正则表达式查找具有唯一数字的数字

android - 如何将文件分配给 InputStream?

java - FileInputStream 抛出 NullPointerException

java - 如何重构具有相同结构、不同类的方法(Java)