1

多くのファイルを含むフォルダーを ANSI (windows-1252) から UTF8 に変換すると、一部のファイルが切り捨てられ、サイズの小さいファイルは完全に空白になります。バッファサイズを小さくしてファイルの変換を試みましたが、成功しませんでした。誰でもこれについて何か考えがありますか???

public class ConvertFromAnsiToUtf8 {

private static final char BYTE_ORDER_MARK = '\uFEFF';
private static final String ANSI_CODE = "windows-1252";
private static final String UTF_CODE = "UTF8";
private static final Charset ANSI_CHARSET = Charset.forName(ANSI_CODE);

public static void main(String[] args) {

List<File> fileList;
File inputFolder = new File(args[0]);
if (!inputFolder.isDirectory()) {
    return;
}
File parentDir = new File(inputFolder.getParent() + "\\"
                + inputFolder.getName() + "_converted");

if (parentDir.exists()) {
    return;
}
if (parentDir.mkdir()) {

} else {
    return;
}

fileList = new ArrayList<File>();
for (final File fileEntry : inputFolder.listFiles()) {
    fileList.add(fileEntry);
}

InputStream in;
Reader reader = null;
Writer writer = null;
try {
    for (File file : fileList) {
        in = new FileInputStream(file.getAbsoluteFile());
        reader = new InputStreamReader(in, ANSI_CHARSET);

        OutputStream out = new FileOutputStream(
                        parentDir.getAbsoluteFile() + "\\"
                                        + file.getName());
        writer = new OutputStreamWriter(out, UTF_CODE);
        writer.write(BYTE_ORDER_MARK);
        char[] buffer = new char[10];
        int read;
        while ((read = reader.read(buffer)) != -1) {
            System.out.println(read);
            writer.write(buffer, 0, read);
        }
    }
    reader.close();
    writer.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
}
}

どんなポインタでも役に立ちます。

ありがとう、アシッシュ

4

0 に答える 0