2012-03-12 15 views
0

操作に関する特定の情報を保存するために、「操作」ごとにテキストファイルを生成するのに本当に問題があります。どのようなアプローチであっても、テキストファイルを作成することはできません。最初の例は理想的なものです(操作ごとに作成して保存する)Webログへの書き込み(テキストファイル)Java EE

注 - 現在、テスト目的でサーブレットでこれを実行しようとしています。大いに感謝します。

try { 
       FileWriter fstream = new FileWriter("out.txt"); 
       BufferedWriter out = new BufferedWriter(fstream); 
       out.write("test"); 
       out.close(); 
      } catch (Exception ex) { 
       System.out.println(ex); 
      } 

異なるアプローチ

try { 

      URL    url; 
      URLConnection  urlConn; 
      DataOutputStream dos; 
      DataInputStream dis; 

      url = new URL("http://localhost:8080/" + request.getContextPath() + "/tmp/myfile.txt"); 
      System.out.println(url); 
      urlConn = url.openConnection(); 
      urlConn.setDoInput(true); 
      urlConn.setDoOutput(true); 
      urlConn.setUseCaches(false); 
      urlConn.setRequestProperty ("Content-Type", "text/plain"); 

      dos = new DataOutputStream (urlConn.getOutputStream()); 
      dos.writeUTF("test"); 
      dos.flush(); 
      dos.close(); 

      //to test 
      dis = new DataInputStream(urlConn.getInputStream()); 
      String s = dis.readLine(); 
      System.out.println(s); 
      dis.close(); 

    } catch(Exception ex) { 
     System.out.println(ex); 
    } 
+0

ファイルシステムにファイルを書き込む権限がありますか? – jmort253

+1

私は現時点でWindows上でローカルに開発していますが、今すぐCHMODにいくつかのフォルダを試してみましょう、ありがとう! – Ash

答えて

1

あなたはこのようにこれをしたいと思いますなぜわかりません。すでに強力なロギングソリューションとデータベースがあります。

最初のケースでは、例外が発生していない場合はほぼ確実にファイルを作成しますが、どこにあるのか分からないだけです。既知のアクセス可能な場所への絶対パスか、アプリケーション自体に対する相対パスを使用して、.getRealPathを使用します。第2のケースで

(あなたは戦争を展開している場合、アプリケーションの相対パスに書き込もうとすると、動作しないことに留意。)

、ないあなたはそれが仕事だろうと思った理由を確認してください。

+0

私は、.getRealPathを使用してファイルパスの生成/検索を管理しました。私はすでにデータベースを使ってデータを記録していますが、テキストファイルも必要です。間違いなく、サーバー上にあるときに私は許可の問題に遭遇するでしょうが、それまではこれが必要です、ありがとう! – Ash

+0

@Ash問題ありません。あなたがうまく働いてうれしい。しかし、まだ私にはちょっと変わったようです。 –

関連する問題