1

品詞タグの可能なすべてのバイナリの組み合わせをマップするファイルを作成しようとしていますが、何らかの理由で、作成したJavaプログラムが8192バイト後に停止します。これが最大バッファサイズか何かだと思いますか?どうすれば変更できますか?

私のコード:

    try {
        Scanner in = new Scanner(new FileInputStream(file.getPath()));
        PrintWriter out = new PrintWriter(new FileOutputStream("S2.gr"));
        createS2(in, out);
    } catch (Exception e) {
        System.out.println("There was an error trying to open the files: " + e.getMessage());
    }


private static void createS2(Scanner in, PrintWriter out) {
    String[] pos = in.useDelimiter("\\A").next().split("\\n");
    out.println("1\tS2");
    for (String x : pos) {
        out.println("1\tS2\t_" + x);    
    }
    for (String x : pos) {
        String temp = ("1\t_" + x + "\t" + x);
        out.println(temp);
        for (String y : pos) {
            out.println(temp + " _" + y);
        }
    }
    for (String x : pos) {
        System.out.println(x);
    }
}
4

1 に答える 1

1

これを試して...

    Scanner in = null;
    PrintWriter out = null;
    try {
        in = new Scanner(new FileInputStream(file.getPath()));
        out = new PrintWriter(new FileOutputStream("S2.gr"));
        createS2(in, out);
    } catch (Exception e) {
        System.out.println("There was an error trying to open the files: " + e.getMessage());
    }
    finally {
        if(in != null) in.close();
        if(out != null) out.close();
    }

注:Java 7を使用している場合は、これを簡単にする新機能があります。例えば

     try (Scanner in = new Scanner(new FileInputStream(file.getPath()));
          PrintWriter out = new PrintWriter(new FileOutputStream("S2.gr")))
     {
        createS2(in, out);
     } catch (Exception e) {
        System.out.println("There was an error trying to open the files: " + e.getMessage());
     }

注:現時点ではJDK 7を利用できないため、2番目の例は100%正しくない可能性がありますが、新しい言語機能でリソースのクローズを管理できるという考え方です。

于 2012-04-24T03:28:37.653 に答える