Java FileInputStream错误:“没有这样的文件或目录”

时间:2013-07-03 18:20:16

标签: java fileinputstream

我正在编写一个java代码来浏览.sfo(SQL和Fortran的组合)文件,并在它们出现在文件中时删除一组特定的字符。我在64位Windows 7机器上使用Eclipse,如果这有任何区别的话。代码正在做我想要的,删除字符块和诸如此类的东西,但最后,在它给我输出后,它显示 “错误:没有这样的文件或目录。” 我不知道为什么;我引用的唯一外部文件是前面提到的.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());
        }
    }
}

同样,我得到的错误信息是: “错误:没有这样的文件或目录。” 如果有人知道为什么会这样,我很乐意听到它;谢谢!

3 个答案:

答案 0 :(得分:1)

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

当你尝试readLine()时,流已经被释放,这就是为什么它说不存在这样的文件。

我认为你的意思是把in.close()放在循环之后,这应该有效。

答案 1 :(得分:0)

尝试提供这样的文件路径 的 “C:\\用户\\ ... \\ file.sfo”

答案 2 :(得分:0)

只需使用File.separator删除“/”字符即可。例如:

String path = "C:/Users/.../file.sfo";
path = path.replaceAll("//",File.separator);
FileInputStream fstream = new FileInputStream(path);