[Java] 56 JavaFX 14 文字コード変換ツール その7 universalchardet

[macOS Catalina 10.15.7]

VScodeでnkfコマンドを使った文字コード変換ツールはうまく作れましたが、universalchardetを使ったコードはjar実行ファイルにすると正常に動作しません。

macOSの影響かもしれないと考え、Mojave搭載機で試してみたものの結果はNGでした。

どうイジってもダメなので、EclipseでMavenではなく普通のJavaプロジェクトを作成してみるとあっさり成功しました。VScodeの軽量環境が気に入っていただけに残念です。

ところで未だにEclipseでまともなMavenプロジェクトを作れないでいます。今後の課題です。

自分の開発環境を確立するまではARMアーキテクチャのAppleシリコンMacへの移行はしない方がいいと考えています。リーク情報ではM1XやM2の開発状況がはかばかしくない、というのもありますが大丈夫なんでしょうか。

開発環境の脱RosettaやUSBポート等の拡張性に進歩がないのであれば、今年の購入は見送ってIntel Macを当面使い続けるつもりです。

package application;

import java.io.IOException;
import org.mozilla.universalchardet.UniversalDetector;

public class FileCharDetector {

    // コンストラクタ
    public FileCharDetector(){
    }

    public String main(String path) throws IOException {
        byte[] buf = new byte[4096];
        java.io.FileInputStream fis = new java.io.FileInputStream(path);

        UniversalDetector detector = new UniversalDetector(null);

        // 判定開始
        int nread;
        while ((nread = fis.read(buf)) > 0 && !detector.isDone()) {
            detector.handleData(buf, 0, nread);
        }

        // 判定終了
        detector.dataEnd();

        // 判定結果取得
        final String detectedCharset = detector.getDetectedCharset();
 
        // 判定の初期化
        detector.reset();
        fis.close();

        return detectedCharset;
    }
}