- PR -

DOMを使って作成したxml文書の削除

1
投稿者投稿内容
真哉
会議室デビュー日: 2004/11/01
投稿数: 5
投稿日時: 2004-12-09 15:24
こんにちわ。真哉と申します。
初歩的な質問と思いますが、よろしくお願い致します。
早速で申し訳ありませんがソースです。

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 DocumentBuilder builder = factory.newDocumentBuilder();

 DOMImplementation domImpl = builder.getDOMImplementation();
 Document document = domImpl.createDocument("","index",null);
 Element root = document.getDocumentElement();

 Element record = document.createElement("record");

 Element recnm = document.createElement("rec_name");
 recnm.appendChild(document.createTextNode("名前"));

 Element reccom = document.createElement("rec_comm");
 reccom.appendChild(document.createTextNode("コメント"));

 record.appendChild(recnm);
 record.appendChild(reccom);
 root.appendChild(record);

 TransformerFactory transFactory = TransformerFactory.newInstance();
 Transformer transformer = transFactory.newTransformer();

 DOMSource source = new DOMSource(document);
 File newXML = new File("index.xml");
 FileOutputStream os = new FileOutputStream(newXML);
 StreamResult result = new StreamResult(os);
 transformer.transform(source, result);

 System.out.println(newXML.delete() ? "OK" : "削除に失敗しました");

実行結果:削除に失敗しました

上記の処理を実行するとxmlファイルが削除できず残ってしまいます。
なぜ削除に失敗してしまうのか、わからず困っています。
この場合何が原因で削除できないのか、御わかりの方いらっしゃいましたら
ご教授いただけないでしょうか。
よろしくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-09 15:48
DOM をつかっていることと削除できないことに因果関係はありますか?
もうすこし切り分けてみましょう。
たぶん関係なく、File IO の API の使い方の問題です。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-12-09 15:54
真哉さんこんにちは。米山@クロノスです。

インギさんがおっしゃるとおりDOMは関係ないですね。
ファイル I/O 操作に関することです。
もう少し具体的には、deleteする前にFileOutputStreamに対する重要な処理が欠けていますね〜?
真哉
会議室デビュー日: 2004/11/01
投稿数: 5
投稿日時: 2004-12-09 16:09
インギさん、米山@クロノスさん返信ありがとうございます。

当初はDOMを使わずxmlファイルを作成していたので、
DOMのせいだと思い込んでいました。
FileOutputStreamのクローズを行っていませんでしたね?
無事うまくいきました。本当にありがとうございました。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-12-09 16:32
引用:

真哉さんの書き込み (2004-12-09 16:09) より:

FileOutputStreamのクローズを行っていませんでしたね?




そうですね。
ファイルを削除するにはストリームを開きっぱなしじゃダメですからね。
解決してよかったです(^^
1

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