0シェアするLINE!「ZipInputStream」を使ってzipファイル読み込み処理を実装してます。すると、特定のファイルだけ何故か読み込むことが出来ない現象にぶち当たりました。普段からMacを使っていると中々気付きにくい点で厄介でした。このファイルをどうにかして読み込ませたい・・・。英数と日本語名で渡されるどちらのケースにも対応。ディレクトリ名自体は後の処理で使用しない。ディレクトリ内のファイルを読み込む事が出来ればOK。調べてみると、「ZipInputStream」で文字コードを指定して対応させることで対処出来たのでメモとして書いていきます。1.2.50-release-103原因はZipInputStreamWindowsで作成したマルチバイト名のディレクトリだけ読み込みません。読み込み失敗時のエラーを見てみます。「MALFORMED」とあります。ググってみると、「奇形の」「不正な形式の」とあります。渡したファイルが不正なデータ扱いされているようです。実装コードの中を確認してみます。問題の実装はこんな感じ。it.nextEntryを呼んだ所で例外が発生しています。略では、次に「ZipInputStream」の中を見てみます。何も指定しないとデフォルトの文字コードは「UTF-8」になっています。ここに「UTF-8」以外の文字コード名のファイルを渡しても、当然予期していない文字コードなので読み込むことが出来ずエラーを吐きます。ちなみにWindows環境で作成したディレクトリは「MS932」という文字コードになります。Shift-JIS」だと思っていましたが、そうではないらしいです。「MS932」は「Windows-31J」という名称とも同義で、Javaの世界では「MS932」を使用して区別しているそうです。LABO解決コード原因は「MS932」の文字コードのディレクトリを「UTF-8」として読み込もうとしていたからということで、こういうコードになりました。定義した「文字コードのリスト」をforEachで回しています。.mapでStringからCharsetに変換しています。try-catchで失敗した場合はログを出力し、ループ自体は続行。成功した場合はreturnでループを離脱。これでUTF-8で読み込みが失敗した場合、MS932を用いて読み込みを行うことが出来ました。デュアルモニターアーム(K001395)」を買ってみた。tomuziso関連記事Rubyの「attr_accessor」ってなんぞや、という人へRubyにattr_accessorってメソッドありますよね。データベース開発を支援するために開発されたフリーのSQL開発ツール。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。デュアルモニターアーム(K001395)」を買ってみた。Boot本を読んだのでレビューGitHubの「プルリクエストテンプレート」はブランチ毎の出し分けが出来ない。入社して10ヶ月で会社を退職することになった。入社して10ヶ月で会社を退職することになった。入社して10ヶ月で会社を退職することになった。