質問
可変長ファイル読み取り処理で、データ0件かつBOMが付与されたファイルを読み込むと「指定されたフォーマットでファイルを読めませんでした。」エラーが発生します。原因と回避策を教えてください。
回答
可変長ファイル読み取り処理では、エンコードが「UTF-8」の場合にBOMを除外する処理があり、BOM付与後にデータが出現する想定となっています。BOMが付与されているにもかかわらずデータが存在しないファイルは想定外のファイルとなるため、読み取り処理がエラーとなります。
本動作は現状の可変長読み取りオペレーションの動作仕様です。
可変長ファイル読み取り処理を利用する場合、以下いずれかの対応をしてください。
- データがない場合は空ファイルにする(BOMを付与しない)
- ファイルの末尾に改行をつける
補足
エンコード別の動作確認結果は以下のとおりです。
■BOM付きデータなしファイルで読み取り処理がエラーとなるエンコード
- UTF-8
- UTF-16BE
■BOM付きデータなしファイルだが読み取り処理がエラーとならないエンコード
- UTF-16
- CESU-8
コメント
0件のコメント
記事コメントは受け付けていません。