Index (March 2009)
Jythonで特定の拡張子を持つファイルだけをリストアップしたい java.io.FileFilter の利用
ちょっとした作業で、特定拡張子を持つファイルだけをリストアップしたくなることは多い。 そんなときにいつも使っている jython スクリプト。
JavaからWindowsの作業用ディレクトリを取得する方法
以前エントリー「 Windowsにおいて、Javaプログラムからユーザのホームディレクトリを取得する方法 」で、 Windowsのホームディレクトリを取得しましたが、今回作業用のディレクトリが必要になりました。
単にテンポラリファイルをつくる場合は、java.io.Fileの createTempFile() メソッドを呼べばよい。 しかし、Java実行時のディレクトリがもし書き込み権限がなかった場合などを考えると、 確実に作業用ファイルを作成できるディレクトリがほしい。
Javaでディレクトリを確実に削除するコード
Java.io.Fileには、delete() というメソッドがあるので、それを呼び出せば、ファイルやディレクトリは削除できる。
ただし、ディレクトリの場合、その中にファイルやサブディレクトリがあると削除が失敗する。
そこで以下のように再帰的にサブディレクトリにさかのぼって、ファイルを消した上で、ディレクトリを消すという
方法で、削除する。
Javaでzipを展開して、再度zipアーカイブを作成 ... OfficeOpenXMLデータの操作のために
MSOffice2007 では、docx,xlsx,pptx のように 拡張子に x が追加されているが、 この実体は、zip ファイルで中身はXML等で構成されている。 したがって、 データファイルだけを展開して中身を書きかえて、再度 zip アーカイブに戻してやれば、 MSOffice なしで、内容を操作することができる。
今回はそのためのJavaコード。
このサンプルでは中身の操作は一切しないで、単に既存の sample.pptx ファイルを作業ディレクトリに展開して、
その後、result.pptx ファイルにzipアーカイブとして保存しているだけ。
テキストファイル中の文字列 png を eps に置き換えるコード
現在、DocBookデータを構造化FrameMakerに流し込む・・・という仕事をしているのだが、 そのとき、DocBookはoxygenで編集しているが、oxygenはepsデータを表示できないため、 いったん png に置き換えてDocBook作成作業をしている。
しかし、FrameMakerに取り込む段階になって、拡張子を eps に戻してやる必要がある。 sedとかawkなんかでごく簡単に処理できるのではないかと思いつつも、とりあえず慣れているJavaで 取り急ぎ変換コードを作成したので、メモしておきます。
ご注意
行単位で処理しているのですが、一行に2回以上置き換えの必要が生じる場合に、最初だけしか置き換えられません。 たぶん簡単に改良できるはずですが、いまのところ、そんな不具合あります。