• ベストアンサー

ファイル入出力をサーブレットで・・・

JAVAのオーソドックスなファイル入出力のサンプルを改造して、サーブレットにしようと思ったのですがうまくいきませんでした。 まず手始めに、コンソールアプリケーションとして、”abc"と言う内容のabc.txtを吐き出すサンプルを試しました、これはうまくいきました。 その後で、それをそのままサーブレットに組み込み、リクエスト時にファイルの出力ができるか試してみたのですが、どうもどこにも出力されていない用です。 サーブレットへのアクセスが失敗しているのかとおもい、サーブレットのプログラムの最後にhtmlに出力させるコードを書いてみたところ出力されましたので、プログラムそのものにはアクセスしているようです。 やりたいことというのは、htmlのtextareaからpostでおくって、サーバーにtxtファイルとして保存する・・・ということです。

  • Java
  • 回答数4
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

どこに書き出したか解らないということですから、 まずは、ファイル名をフルパスで指定して書き出してみたらどうでしょうか

azicyan
質問者

お礼

ありがとうございます。 おっしゃる通り、フルパスにしたらでてきました。

その他の回答 (3)

回答No.4

Linux環境でしたけど、 ファイル名だけを指定したら、 Tomcatのディレクトリ下のbin/ のなかにファイルが作られました。

azicyan
質問者

お礼

ありがとうございます。 コンテキストルートにもbinにもありませんでした。

回答No.3

絶対パスでファイル出力していないのなら、 システムのプロパティの"user.dir" (usr.dirかも) 以下のディレクトリ、 もしくはコンテキストルートに出力されたような…。 Windowsだったらマシンの中を全検索してみては?

azicyan
質問者

補足

user.dir・・・ですか・・・ すいません。意味が分かりません。 マシンはwinです。 全検索してみましたが、該当なしでした

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

書き込みの権限がないことが考えられます。その点は問題ないでしょうか。

azicyan
質問者

補足

ログにエラーがでていないので違うと思います。

関連するQ&A

  • ファイルの入出力について・・・

    C言語初心者です。。。 ファイルの入出力についてなのですが、***.txtというファイルを読み込み、内容をコピーし、***.bakというファイルを作成するプログラムをつくっています。 単純なファイルの読み込みや書き込み程度なら理解しましたが、内容をコピーし、拡張子を.bakに変えるというところが全く思いつきません。 教えてもらえないでしょうか??よろしくお願いします。

  • サーブレットファイル 404

    OS はWindows 8で、JDK 6 、Tomcat 6です。 今朝からサーブレットやjspのリンクを叩いても 「 ~を開くことが出来ません。インターネットサイトのレポートによるとリクエストしたアイテムが見つかりませんでした。(HTTP/1.0 404) 」 としか出なくなりました。昨日までは表示されていたんですが・・・ http://localhost:8080/で左上に猫のロゴがあるページは表示されます。 例としてSample1.javaがありますが、 アドレスはhttp://localhost:8080/自分のフォルダ/servlet/Sample1で このサーブレットファイルはC:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\自分のフォルダ\WEB-INF\classesにあります。  web.xml(C:\Users\自分の名前\Desktop\プログラム\Java基本\java_prc\YJK_ish\WEB-INFの直下に有) を確認しても <servlet> <servlet-name>Sample1</servlet-name> <servlet-class>Sample1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample1</servlet-name> <url-pattern>/servlet/Sample1</url-pattern> </servlet-mapping> と入っています。 一応8080でバッティングさせないようにPHPで使う方のApache のサーバーもhttpd -k stopで止めておきました。 考えられる原因は何でしょうか? 他に確かめる方法は無いのでしょうか?

    • ベストアンサー
    • Java
  • ファイルの入出力に関して

    ファイル入出力の部分なんですが FILE *input,*input2,*input3; input=fopen("070921\10.txt","r"); input2=fopen("070921\20.txt","r"); input3=fopen("070921\30.txt","r"); 以下省略.  上記のようなプログラムに関して,フォルダの070921とテキストファイルの10,20,30の部分をコマンドライン上で入力させてひとまとめでデータを読み込みたいと考えています.  gets関数を用いて,プログラムの一部を以下のように作成してみたのですが入力に手間がかかります. char fin[80]; gets(fin); input=fopen(fin,"r"); 以下省略. 何か良い方法があれば教えてもらえないでしょうか.

  • perlを使ったファイルの入出力について

    perl 初心者です。 perl を使ってデータ整理を試みていますが、方法がわからなくて困っています。 やりたい操作は、 1、ディレクトリ内にある特定の拡張子をもつすべてのデータファイルを読み込む 2、データソート 3、データファイル名を変更せずに、ソートしたデータを出力する 例 ディレクトリに以下のデータファイルがあるとします aaa.data bbb.data ccc.data : zzz.data これらのデータファイルをすべて読み込み、中身を整理した後に aaa.txt bbb.txt ccc.txt : zzz.txt となるように、それぞれのデータの名前を変更せずに出力したいと思っています。 スクリプトのサンプルなんかがあればありがたいです。

    • ベストアンサー
    • Perl
  • C++のstringクラスとファイルの入出力について

    C言語では入出力はfopen,fcloseなど, 文字列の扱いも,char型の配列にfgets…なんとなく使いづらかったので, C++のstringクラスが便利だと聞き,勉強しています。 主にネットで"string 配列 入出力"などで検索しながら探しています。 自分で作成したデータファイル"ex.txt"を読み込み, 用意した配列"data[i]"に代入して,その後色々処理をしたいと思います。 //ex.txt A 2 0 1.0 B 1 2 10.0 C 1 0 100.0 という,"名前 番号1 番号2 数値データ"という4つの情報を"data[i]"に入れ,for文でA~Cまで配列を作りたいです。 後に,名前と番号,数値を切り離して処理したいです。 とりあえず某サイトを見よう見まねで以下のプログラムを書きました。 #include <fstream> #include <string> #include <iostream> using namespace std; int main(){ ifstream ifs( "ex.txt" ); string str; ifs >> str; cout << str << endl; return 0; } Visual C++のコンソールアプリケーションでデバッグなしで実行させると 単に,"A"と一文字しか出力されませんでした。 正直,動作もなにもわからず書いただけです。 C++のstringクラスを用いて,先の"ex.txt"の内容を, ファイルから読み込んで,画面に表示させるプログラムを教えてください。 よろしくお願いします。

  • 外部ファイル操作について

    外部ファイルへの入出力のやり方についてアドバイスお願いします。 外部ファイルは 書き込み専用(Sample.txtの内容を書き込む)のファイル「Test.txt」と 書き込む内容を記載してあるファイル「Sample_01.txt」と「Sample_02.txt」の2種類を用意しておきます。 「Sample_01.txt」には 1.おはよう 2.こんにちは 3.こんばんは Sample_02.txt」には 1.いただきます 2.ごちようさま 「Test.txt」の1行目には 【Sampleテキストの内容】 という文字列をそれぞれ初めから記載しておきます。 ファイルの読み込み・書き込みにおいて、「Test.txt」に1行目(【Sampleテキストの内容】 )を消さずに読み込み・書き込みするにはどうしたらよいのでしょうか。 また、「Test.txt」に1行目に【Sampleテキストの内容】という文字列が存在するかを判定するにはどうしたらよいのですか。 お手数ですが、アドバイスお願いします。 出力はDOS画面に行います。

    • ベストアンサー
    • Java
  • C言語のファイル入出力について教えて下さい

    C言語初めて1ヶ月の超初心者です。 本を読んでもネットで調べても、ファイル入出力の意味がいまいちよく分かりません。 プログラムはCPadで書いています。 書き終わったプログラムを.cのファイル名で保存し、それをコンパイル。 読み込みたいファイルを.csvで作る。書いたプログラムの実行ボタンを押し、 .exe .csv .c の3つのファイルを打ち込んだ後、また.cを打ち込む。 これで一応実行はできるのですが、csvファイルで作ったもの (例をだして言うと ------------------------------------------------------------------ 名前     番号      給与   残業代    所得税 ○○  0001     200000   20000     10000 ------------------------------------------------------------------ というものをcsvで作るとします)  は、プログラムでも、名前 番号 給与 残業代 所得税 と書いてある部分はまったく同じように作らないと csvファイルから読むことはできないのでしょうか? csvファイルとプログラムを実行した結果の役割が、理解出来なくて困っています。ずっとプログラムの文法(?)ばかり勉強してきて、いざファイル入出力をしたら、どういう意味があるのかどう役立つのか分かりません。 後、上のような表で20人分をまとめて出力したいのですが、ファイル入出力するにあたって、条件式はfprintfなどを書く前に書くのでしょうか? お勧めの分かりやすい本などの情報も、教えて頂けると嬉しいです。   長々申し訳ありませんが、宿題の納期が近いので困っています。 よろしくお願いします。

  • ファイルにコーテーション類を書き込む方法

    HTMLのフォーム(Textarea)で入力したテキストを そのまま、ファイルに書き込みたいです。 (正式にはHTMLエディタのようにしたいです) 以下のソースのように作成しましたが、 シングルコーテーションやダブルコーテーションが ファイルに書き込まれる時に¥がついてしまいます。 ================== 入力フォーム =================== <html> <body> <form name='fm' action='fsave.php' method='post'> <textarea name='txt' rows='20' cols='40'> </textarea> <input type='submit' value='ファイル保存'> </body> </html> ================== fsave.php =================== <?php $txt = $_REQUEST["txt"]; $fp = fopen("sample.html","w"); fwrite($fp,$txt); echo "ファイル書き込み完了"; ?> =============== TEXTAREAへの入力値 =================== <a href='aaa.html'>LINK </a> =============== sample.htmlの中身 =================== <a href=\'aaa.html\'>LINK </a> シングルコーテーションやダブルコーテーションを フォームからPHPに渡して、ファイルに書き込むには どうすればよろしのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • FORTRAN ファイルの入出力の方法がわかりません

    メインプログラムを main.dat 入力するファイルを input.txt とします。 input.txtファイル内は A 12 23 B 49 93 C 66 25 ・ ・ ・ と続いてるとします。(数字は同じ数ずつ並んでて、その間にアルファベットがある) この時、2行目~3行目(12と23)、5行目~6行目(49と93)、8行目~9行目(66,25)、・・・・、とそれぞれのアルファベットのグループの数字を読み込んで、別々の出力ファイルを作るにはどうすれば良いかわかりません。つまり ファイルA 12 23 ファイルB 49 93 ファイルC 66 25 ファイルD ・ ・ ・ とアルファベットのグループ毎にファイルを作りたいのです。 DO文だけでできるのか?また、IF文を使う必要があるのか?直接アクセス入力(ACCESS='DIRECT')を使うのか?初心者でかなり調べたんですがよくわかりません。教えて頂けると幸いです。よろしくお願いします。 また、もしよろしければ、グループCのみの数字(66、25)だけを読み込んで、出力する場合についても教えてくれるとありがたいです。 (基本的なOPEN、READ、WRITE文の使い方はわかっています。)

  • サーブレットで困っています。

    「基礎からのサーブレット/JSP 改訂版」という本で勉強を始めようと開発環境を整えたのですが、本の通りにやっても、うまくいきません。 本に最初に載ってるアプリケーションの作成のところで「hello.txt」というファイルを作り、 アドレスに「http://localhost:8080/entry/hello.txt」と入力すると Hello This is Text という hello.txt の中身が表示されるはずなのですが、 HTTPステータス 404-/entry/hello.txt と出てきてしまいます。 調べたところ、このエラーはファイルが無いという意味らしいのですが、ファイルは指定の位置に置いてあります・・ コマンドプロンプトから「JAVA_HOME」と入力すると「JAVA_HOME=C:\Program Files\Java\jdk1.5.0_16」と出て来ます。(本ではjdk1.5.0._09となっています) これ以外のところは本と一緒なのですが・・ どなたか、お分かりになりましたら、教えてください。お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう