Closed happynow closed 8 months ago
rarファイル内のファイル名を取得する際、現行コードでは、まず getFileNameW を呼び出して Unicode のファイル名の取得を試みます。それが失敗したら getFileNameString で ASCII コードのファイル名を取得します。
getFileNameW
getFileNameString
https://github.com/kyukyunyorituryo/AozoraEpub3/blob/82ac2046c88954798b17c0038485a3f7aad3215f/src/com/github/hmdev/image/ImageInfoReader.java#L260-L261
junrar 7.5.5 API の資料によれば、このような処理は getFileName のひとつの呼び出しに置き換えられます。
getFileName
JavaDoc [Class ZipArchiveInputStream](https://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.html#getNextEntry()) には getNextZipEntry を getNextEntry に置き換えるよう書かれています
getNextZipEntry
getNextEntry
下記 ImageInfoReader.java の 366行目 で return null が実行されるとき zf がクローズされないと警告されてました。
ImageInfoReader.java
return null
zf
ZipFile zf = new ZipFile(this.srcFile, "MS932"); ZipArchiveEntry entry = zf.getEntry(srcImageFileName); if (entry == null) { srcImageFileName = this.correctExt(srcImageFileName); entry = zf.getEntry(srcImageFileName); if (entry == null) return null; //<----------ここでリターンする際、zf がクローズされない } InputStream is = zf.getInputStream(entry); try { return ImageUtils.readImage(srcImageFileName.substring(srcImageFileName.last... } catch (Exception e) { e.printStackTrace(); } finally { is.close(); zf.close(); }
InputStreamクラスはもちろん apache の ZipFile クラスも java.io.Closeable を実装しているので try-with-resources 文を使えます。それを使うように修正しました。
java.io.Closeable
try-with-resources
ここの処理は「変換前確認」の画面で動きます。以下のとおり動作確認しました。
getCountメソッドでもDeprecatedの警告が出てますが、もう少し調査します。今回は修正を見送ります。
非推奨メソッド junrarライブラリ/getFileNameW, getFileNameString について
rarファイル内のファイル名を取得する際、現行コードでは、まず
getFileNameW
を呼び出して Unicode のファイル名の取得を試みます。それが失敗したらgetFileNameString
で ASCII コードのファイル名を取得します。https://github.com/kyukyunyorituryo/AozoraEpub3/blob/82ac2046c88954798b17c0038485a3f7aad3215f/src/com/github/hmdev/image/ImageInfoReader.java#L260-L261
junrar 7.5.5 API の資料によれば、このような処理は
getFileName
のひとつの呼び出しに置き換えられます。非推奨メソッド apacheライブラリ/getNextZipEntry について
JavaDoc [Class ZipArchiveInputStream](https://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.html#getNextEntry()) には
getNextZipEntry
をgetNextEntry
に置き換えるよう書かれていますzf がクローズされていないという警告の対応
下記
ImageInfoReader.java
の 366行目 でreturn null
が実行されるときzf
がクローズされないと警告されてました。InputStreamクラスはもちろん apache の ZipFile クラスも
java.io.Closeable
を実装しているのでtry-with-resources
文を使えます。それを使うように修正しました。ここの処理は「変換前確認」の画面で動きます。以下のとおり動作確認しました。
非推奨メソッド getCount() の対応は見送り
getCountメソッドでもDeprecatedの警告が出てますが、もう少し調査します。今回は修正を見送ります。