1

テキストファイルに情報を書き込もうとしています。各情報は新しい行にある必要があります。次のコードは機能しますが、すべてが 1 行に出力されます。

println() は新しい行に出力すべきではありませんか? なぜ機能しないのですか?

<%
    String file = request.getParameter("page"); 
    String name = request.getParameter("name");
    String location = request.getParameter("location");
    String number = request.getParameter("number");
    String url = request.getParameter("url");

    PrintWriter pw = new PrintWriter(new FileOutputStream(file));

    pw.println(name);
    pw.println(location);
    pw.println(number);
    pw.println(url);

    pw.close();
%>
4

1 に答える 1

1

JSP の真の利点を利用して、このようにします

<%
        String file = request.getParameter("page"); 
        String name = request.getParameter("name");
        String location = request.getParameter("location");
        String number = request.getParameter("number");
        String url = request.getParameter("url");

        PrintWriter pw = new PrintWriter(new FileOutputStream(file));

        pw.println(name);
              %><br/>

        <%  pw.println(location);%><br/>
        <%  pw.println(number);%><br/>
        <%  pw.println(url);
                pw.close();
                                           %>

PrintWriterJSP自体がスクリプトレットのprintwriterオブジェクト変数である「out」を提供するため、オブジェクトを再度作成する理由がわかりません。
これを行うには他にもいくつかの良い方法がありますが、あなたのコードによると、この方法が快適であることがわかりました.
編集:何も機能しない場合は、チャンスを与える必要がありますpw.printf( "%s" + "%n" , location);。これにより、書式設定されたテキスト文字列を PrintWriter に渡すことができるからです。使用する正当な理由printfは、改行文字を処理するためです。改行文字は、使用しているオペレーティング システムによって異なります。Windows は\r\n新しい行の文字を追加します。しかし、Unix システムでは\n. printf 関数を使用すると、プラットフォームに関係なく、正しいエンコーディングが保証されます。

于 2013-03-29T03:44:32.467 に答える