1

Web アプリケーション ディレクトリ内にファイルTestFile.dbを作成しようとしています。しかし、私は今まで失敗してきました。理由がわかりません。

ファイルの作成を試みる JSP スニペット:

        <% if(new FileMaker().makeFile()) {%>
        <h2>File Creation successful !</h2>
        <%} else {%>
            <h2>Unable to create a file !</h2>
            <%}%>

ファイルを作成しようとするクラス:

public class FileMaker {

private boolean success = false;

public boolean makeFile() {
    try {
        File f = new File("TestFile.db"); // CREATE A FILE
        PrintWriter writer = new PrintWriter(f);
        writer.println("This is a test statement on a test file");
        writer.close();
        success = true;
    }catch(Exception exc) {
        exc.printStackTrace();
        return success;
    }
    return success;
}
}

Web アプリの名前付きApp-1構造は次のようになります。

ここに画像の説明を入力

上記のコードは例外を作成せずに戻りますtrueが、作成されたファイルは表示されません。何故ですか ?しかし、ステートメントを次のように変更すると:

File f = new File("/App-1/TestFile.db");

ファイルが見つからないという例外が発生します。この理由がわかりません。両方の場合について説明してください。ディレクトリ内にファイルを作成するにはどうすればよいApp-1ですか?

4

2 に答える 2

2

You need to provide the proper path to filemaker. You can do this by getting the proper path from the servlet context.

<%@page import="com.adtest.util.FileMaker"%>
<% if(new FileMaker().makeFile(this.getServletContext().getRealPath("/"))) {%>
    <h2>File Creation successful !</h2>
    <%} else {%>
        <h2>Unable to create a file !</h2>
        <%}%>

Next in your filemaker class add the path and only create if it does not extist.

public boolean makeFile(String path) {
    try {
        File f = new File(path+"\\TestFile.db"); // CREATE A FILE
        if(!f.exists())
            f.createNewFile();
        PrintWriter writer = new PrintWriter(f);
        writer.println("This is a test statement on a test file");
        writer.close();
        success = true;
    }catch(Exception exc) {
        exc.printStackTrace();
        return success;
    }
    return success;
}
于 2013-01-16T16:05:01.387 に答える
0

f.getAbsolutePath() をデバッグして使用し、作成したファイルのパスを取得してください。したがって、パスを受け取ったら、それを変更できます。詳細がわかり次第、質問を更新してください。実際には作成されていないように見えるため、file not found が表示されます。実際に mkFile() コマンドを呼び出していますか? :)

exists() が false を返す場合は、次のようにします。

file.createNewFile("fileName");
//write some data to file.

createFileName() は完全に空の新しいファイルを作成します。

于 2013-01-16T15:52:39.367 に答える