1

だから私はこのようなものを持っています:

File testFile = new File("/opt/tester/etc/test.properties");
if(!testFile.exists()){
   System.exit(0) }

常に終了し、デバッガーを見ると、「\opt\tester\etc\test.properties」の「パス」プロパティと 1 の「prefixLength」でファイルが作成されていることがわかります

ファイルはシステム上に存在し、「ls」コマンドと「file」コマンドを実行でき、正常に動作します。パーミッションなどを読み取ると、ファイルのプロパティを次のように変更しました。

-rw-rw-rw-. 1 root root 475 Jun 18 14:11 /opt/tester/etc/test.properties

前:

 -rw-------. 1 user1 user1 475 Jun 18 14:11 /opt/tester/etc/test.properties

(私の Java クラスはルートとして実行されており、パスにシンボリック リンクはありません)

なぜこれが起こっているのですか?ありがとうございました。

更新:同じディレクトリにファイル「test」を作成し、内部に「nano」という単語を追加しましたが、まだ機能しません..だから、ファイルは大丈夫で、何か他のものだと思います

更新 2:未解決として私の本に行きます.. / で設定したパスと関係があると思います。デバッガーで見ると \ として保存されます。ただし、デバッガーを介して実行されない場合は正常に実行されます。そのため、私の環境 (Linux で実行されているコードが、Windows 7 で実行されている Mule Studio 1.0.0 (Eclipse 3.6.1 ベース) によってリモートでデバッグされている) が原因だと思います。

更新 3: VM の 32 ビット デバッガーとクライアントの 64 ビット デバッガーが不具合に関係している可能性があるとのことを読んでください。

4

4 に答える 4

0

if条件を{}中括弧で囲んでいないためにバグが発生したと思われます。中括弧がない場合、ifと の間に行がある場合、出口は常に呼び出されます (句System.exit(0)の一部ではないため)。if

于 2012-06-26T16:52:02.413 に答える
0

これは幼稚に見えるかもしれませんが、私にとってはうまくいったので、このコードを試していただけますか...

ディスクにファイルを書き込むには:

try {
    File f = new File("path_of_file"); 
    FileWriter fw = new FileWriter(f);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write("Hello");
    bw.close();
    fw.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

このコードは、指定された場所にファイルが存在することを確認します。

File f = new File("path_of_file");
if(f.exists()){
    System.out.println("success");
}
else{
    System.out.println("fail");
}
于 2012-06-26T17:02:17.450 に答える
0

ばかだな、リモートでデバッグ中だ!! そのため、Eclipse はリモート マシンではなく自分のシステムでファイルを探していると思います。(初めてリモートデバッグを使用)

(これは正解ではありません。リモート デバッグがこれにまったく干渉してはならないことを学んだばかりだからです)

于 2012-06-26T16:50:03.613 に答える