@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ファイルに文字が書き込まれない

投稿者投稿内容
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-01 06:40
このソースなのですが、何故かtest.txtに書き込まれません。

コード:
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "&#8203;http://www.w3.org/TR/html4/loose.dtd">&#8203;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ファイルに文字列を書き込む</title>
</head>
<body>
<%
//オブジェクトを生成する
FileWriter fw = new FileWriter(application.getRealPath("test.txt"));
BufferedWriter bw = new BufferedWriter(fw);
bw.write("俺はバカです。");
//オブジェクトを閉じる
bw.close();
fw.close();
%>
</body>
</html>


多分これを見ている方々は、何でこんな簡単なの!と思われるかもしれませんが、自分も何で書き込まれないのか不思議ですし、これを読まれている高度な知識の方々に是非アドバイスを頂きたく、質問しました。
どうしても書き込めないんですよね。それで、今度はファイルの文字を読み込むファイルを書いたところ、それは読み込まれるんですね。
ちなみに、ソースは

コード:
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
    import="java.io.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ファイルからデータを読み込む</title>
</head>
<body>
<%
FileReader fr = new FileReader(application.getRealPath("test.txt"));
int i = 0;
while ((i = fr.read())!= -1) {
	out.println((char)i);
}
fr.close();
%>
</body>
</html>



以上です。
本当に単純なプログラムなので、逆になおしようがないとも言えなくもありませんが。
温かいアドバイスを頂ける事を期待しています。
Pucci
会議室デビュー日: 2008/10/28
投稿数: 10
投稿日時: 2009-04-01 09:36
windows + tomcat環境ですが
書き込みができました。
ファイルが読み取り専用になってたりしませんでしょうか。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-04-01 09:51
Tomcatはどのユーザで動いてますかね。
書き込み権限の問題かと。
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-01 10:45
Pucciさん、かつのりさん、アドバイスありがとうございます。
Pucciさんはわざわざ試して下さったのですか。
本当に感謝します。
Pucciさんとほぼ同じ環境なのでソースは問題無いという事ですね。
かつのりさんの意見だと権限の問題ですか。
adminのはずなんですけどね。
もう1回調べてみます。
本当にありがとうございました。
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-01 12:10
お礼の後すぐに書くのもなんですが、本当に間違えてないんですよね。
Pucciさんが試されて上手く行くって事は自分の方の何かが悪いという事しか考えられない。
1つ気にかかることがありまして、
ステップ1.FileWriter.jspで書き込む。
ステップ2.test.txtには何も書き込まれていない。
ステップ3.FileReader.jspで読み込むと書き込んだ文字が表示される。
test.txtには何も書き込まれていないのにFileReader.jspで書き込んだ文字が表示されるのっておかしいですよね。
Piucciさんの言う読み取り専用にはなってないです。
Tomcat6.0なのですが、ダウンロードしてadminになっていると思われるのですが……。
後もう1つ気にかかる事がありまして。
コード:
FileWriter fw = new FileWriter(application.getRealPath("test.txt"));


これで、例えばtest.txtを存在しないfoo.txtに変更しても問題無く実行されるんですよね。
普通はファイルが存在しない、とかエラーになりますよね。
それも分からないです。
何か気付いた事がありましたら、どんな事でもいいのでアドバイスを下さい。
どうぞ宜しくお願い致します。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-04-01 12:31
application.getRealPath("test.txt")でやってるなら、
権限諸々は関係なさそうですね。失礼しました。

引用:

これで、例えばtest.txtを存在しないfoo.txtに変更しても問題無く実行されるんですよね。
普通はファイルが存在しない、とかエラーになりますよね。


存在しない場合、自動で作られます。
satomi
会議室デビュー日: 2008/06/11
投稿数: 12
投稿日時: 2009-04-01 12:47
Tomcat6.0ということはJDKは5以降ですよね。
FileWriterはファイルが無ければ作成しようと試みます。

application.getRealPathで取得したパスを表示してみたらどうでしょう?
思っていたところと別のところが指し示されたりしていませんか?
デューン
大ベテラン
会議室デビュー日: 2004/04/21
投稿数: 174
お住まい・勤務地: Tokyo
投稿日時: 2009-04-01 13:19
Readerの方に存在しないはずのファイル名を指定した場合はエラーが起きますか?

スキルアップ/キャリアアップ(JOB@IT)