質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

660閲覧

どうして、ファイルが作成されないのか分からない

threeeverytwo

総合スコア49

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/10/23 12:46

編集2017/10/23 14:24

###前提・実現したいこと
以下のコードで、htmlファイルを作成したい。
###発生している問題・エラーメッセージ
とりあえず、自分なりに調べて、コードを書いてみたが、
ファイルが作成されない、それがなぜなのか、分からない。

###該当のソースコード
SelectionOptions.java

java

1 2 3 4 //--- ファイルpasocon.txtから読み込み 5 request.setCharacterEncoding("UTF-8"); 6 File f = new File(getServletContext().getRealPath("/WEB-INF/pasocon.txt")); 7 BufferedReader in = new BufferedReader(new InputStreamReader(                          new FileInputStream(f), "Shift_JIS")); 8 String line = ""; 9 String[] str = new String[STR_NUMBER]; 10 // 一行ずつ読み込む 11 while ((line = in.readLine()) != null) { 12 // 読み込んだ文字の前後の空白を取り除く 13 line = line.trim(); 14 // 読み込んだ文字が空白ならば、以降の処理を飛ばす 15 if (line.trim().equals("")) { continue; } 16 // 読み込んだ文字列を空白で分割 17 str = line.split(" "); 18 //--- 読み込んだ文字列から入力フォームを作成 19 response.setContentType("text/html; charset=UTF-8"); 20 System.out.printf("str[0] = %s\n", str[0]); 21 File tmp = new File(getServletContext().getRealPath(                           String.format("/WEB-INF/%s.html", str[0]))); 22 PrintWriter tmpOut = new PrintWriter(new OutputStreamWriter(                            new FileOutputStream(tmp), "UTF-8")); 23 tmpOut.println("<html><head><meta charset=\"UTF-8\">"); 24 tmpOut.printf("<title>%s</title></head>", str[0]); 25 tmpOut.printf("<body><h1>%sを選んでください</h1>", str[1]); 26 tmpOut.println("<form action = 'SelectOptions' method = 'post'>"); 27 for (int i = 1; i <= (str.length-1)/2; i++) { 28 tmpOut.printf("<input type = 'radio' name = '%s%d' value = '%d'>", str[0], i, i); 29 tmpOut.printf("%s %s円\n", str[i], str[i+1]); 30 } 31 tmpOut.println("<br />"); 32 tmpOut.println("<input type = 'submit' value = '送る'>"); 33 tmpOut.println("<input type = 'reset' value = 'キャンセル'> </form></body></html>"); 34 } 35 response.sendRedirect("SelectOptionsCat"); 36 } 37} 38

###試したこと
・ファイルから、文字列が正しく読み込めているか、出力して確認したが、読み込めてはいた。
・別のServletで、作成できているであろう、htmlファイルの一つの中身を出力してみたが、なにも出力されなかった。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

flushとリソースの解放を行うとどうなりますか?

Java

1try (PrintWriter tmpOut = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tmp), "UTF-8"))) { 2 // tmpOutに色々書き込み 3 4 // 最後にflushする 5 tmpOut.flush(); 6}

tmpOutをtryで囲んだだけで、出力されるようであればflushは不要だと思います。

投稿2017/10/24 00:50

編集2017/10/24 00:57
root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

threeeverytwo

2017/10/24 04:13

返信遅くなり申し訳ありません。 try文で囲むと出力されるようになりました。 お答えいただき、大変ありがとうございました。
guest

0

ファイルが作成されないんですか?(ファイル自体が存在しない)
それともファイルは作成されてるけど中身が空っぽだという事なんですか?
前者なら書き込み権限がちゃんとあるか確認してみてください。
後者なら出力処理終わったらきちんとCloseしてみてください。

投稿2017/10/24 00:42

HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

threeeverytwo

2017/10/24 04:13

返信遅くなり申し訳ありません。 お答えいただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問