0

.sfo (SQL と Fortran の組み合わせ) ファイルを調べて、ファイルに表示されるたびに特定の文字セットを削除する Java コードを書いています。私は 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());
        }
    }
}

ここでも、「エラー: そのようなファイルまたはディレクトリはありません」というエラー メッセージが表示されました。なぜこれが起こっているのか誰かが知っているなら、私はそれを聞きたいです; ありがとう!

4

3 に答える 3

1

You are closing the InputStream at the end of the first iteration of your while loop - this releases any system resources associated with the stream.

When you try to readLine(), the stream has already been released so that's why it says No such file exists.

I think you meant to put the in.close() after the loop, that should work.

于 2013-07-03T20:02:02.473 に答える
0

で「/」文字を削除するだけFile.separatorです。例:

String path = "C:/Users/.../file.sfo";
path = path.replaceAll("//",File.separator);
FileInputStream fstream = new FileInputStream(path);
于 2013-07-03T18:40:30.010 に答える
0

「C:\\Users\\...\\file.sfo」のようなファイル パスを指定してみてください 。

于 2013-07-03T18:22:59.833 に答える