Java读写UTF-16 little Endian文件


    private void writeTargetCsvFile(File originCsvFile, File targetCsvFile) throws Exception {
        if (targetCsvFile.exists()) {
            boolean deleteResult = targetCsvFile.delete();
            if (deleteResult == false) {
                throw new Exception(targetCsvFile.getAbsolutePath() + " has existed and can not be deleted");
            }
        }
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader br = null;

        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter bw = null;
        String line = null;

        fis = new FileInputStream(originCsvFile);
        isr = new InputStreamReader(fis, StandardCharsets.UTF_16LE);
        br = new BufferedReader(isr);

        fos = new FileOutputStream(targetCsvFile);
        osw = new OutputStreamWriter(fos, StandardCharsets.UTF_16LE);
        bw = new BufferedWriter(osw);

        int lineNumber = 1;
        while((line = br.readLine()) != null) {
            if (lineNumber == 1) {
                String[] columns = line.split("\t");
                columns[2] = getLanguageNameByPrimaryAndSub(columns[2]);
                columns[3] = getLanguageNameByPrimaryAndSub(columns[3]);
                line = String.join("\t", columns);
            }
            bw.write(line);
            bw.newLine();
            lineNumber++;
        }
        bw.flush();

        bw.close();
        osw.close();
        fos.close();

        br.close();
        isr.close();
        fis.close();
    }

猜你喜欢

转载自blog.csdn.net/qq_38844636/article/details/79628341