こんにちは!JavaでShift JISからUTF-8へ、ディレクトリ全体を一括で変換する方法をご紹介します。それでは、手順について見ていきましょう。
1. まずはコードの準備
既にご用意のあるコードをコンパイルして実行するだけで、ディレクトリ全体の文字コードを一括変換できます。私が用意したコードは以下の通りです。
※安全のために、Javaファイルのみ対象です
package convert;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
public class main {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("エンコードしたいファイルが存在するディレクトリのパスを指定してください.");
return;
}
// コマンドライン引数からエンコードしたいファイルが存在するディレクトリのパスを取得
String targetDirPath = args[0];
try {
Files.walk(Paths.get(targetDirPath))
.filter(Files::isRegularFile)
.filter(path -> path.toString().endsWith(".java"))
.filter(path -> !path.toString().endsWith("_bak.java")) // ファイル名の末尾に _bak があるファイルは対象外とする
.forEach(main::processFile);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void processFile(Path path) {
try {
// SJISでファイルを読み込む
String data = new String(Files.readAllBytes(path), "MS932");
// バックアップファイルのパス(元のファイル名に _bak を追加)
String backupPath = path.toString().replace(".java", "_bak.java");
Files.copy(path, Paths.get(backupPath));
// 出力先パス(同じファイルに上書き)
String outputPath = path.toString();
// ファイル出力(UTF-8)
try (FileOutputStream fos = new FileOutputStream(outputPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
OutputStreamWriter osw = new OutputStreamWriter(bos, "UTF-8")) {
osw.write(data);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. 使い方:Step by Stepで解説!
では、このコードをどのように使うのか、具体的な手順を見ていきましょう。
Step 1: 新規フォルダの作成
まず、新規のフォルダを作成します。この例では、フォルダ名を「convert」にします。
Step 2: テキストファイルの作成
新規フォルダ内にテキストファイル(main.javaとします)を作成し、上記のコードをコピーします。
Step 3: コマンドラインから対象のパスに移動
次に、コマンドプロンプト(Windowsの場合)またはターミナル(macOSの場合)を開き、以下のコマンドを実行します。
cd 該当のフォルダのパス
Step 4: コンパイル
以下のコマンドでJavaファイルをコンパイルします。
javac -encoding UTF-8 main.java
Step 5: フォルダの移動
コンパイル後、一つ上のフォルダに移動します。
cd ../
Step 6: 実行
最後に、以下のコマンドを実行します。
java convert.main "変更したいフォルダのパス"
3. 結果:変換成功!
この手順を踏むことで、指定したディレクトリ内の全てのファイルがUTF-8に変換されます。元のファイルは「_bak」がついてバックアップされるので、安心して操作できます。
4. なぜこのツールを作ったのか?
それは、教科書のサンプルがShift JISで書かれていて、その度に変換するのが手間だったからです。このツールを使用すれば、手間なく一括でShift JISからUTF-8へと文字コードを変換できます。これで、あなたも文字コードの問題に悩まされることなく、よりスムーズにコーディングに集中できるでしょう!
以上、JavaでShift JISからUTF-8へ、ディレクトリ全体を一括で変換する方法のご紹介でした。このツールが皆さんのプログラミングライフを少しでも楽にする手助けになれば幸いです。何か問題や疑問があれば、お気軽にコメント欄からお知らせください。