首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 文件字符碼表排序:讀取 txt、過濾空白、輸出有序字符

     編輯:Java 綜合教學

需求

將 days.txt 所有字符按 Unicode 碼點升序寫入 days01.txt,忽略換行、空格、Tab、回車。

完整代碼

package com.dragon.java.filesort;

import java.io.*;
import java.util.*;

public class FileCharSort {
    public static void main(String[] args) {
        FileReader fr = null;
        FileWriter fw = null;
        List<Character> list = new ArrayList<>();

        try {
            fr = new FileReader("src/com/dragon/java/days.txt");
            fw = new FileWriter("src/com/dragon/java/days01.txt");
            char[] buf = new char[1024];
            int len;
            while ((len = fr.read(buf)) != -1) {
                for (int i = 0; i < len; i++) {  // 只遍歷有效長度,避免 buf 剩餘空字符
                    char c = buf[i];
                    if (c == '\r' || c == '\n' || c == ' ' || c == '\t') continue;
                    list.add(c);
                }
            }
            Collections.sort(list);  // Character 實現 Comparable,按碼點排序
            char[] out = new char[list.size()];
            for (int i = 0; i < out.length; i++) out[i] = list.get(i);
            fw.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            closeQuietly(fr);
            closeQuietly(fw);
        }
    }
    private static void closeQuietly(Closeable c) {
        if (c != null) try { c.close(); } catch (IOException ignore) {}
    }
}

關鍵點

  • fr.read(buf) 返回實際讀取長度,迴圈 i < len 避免緩衝區尾部 \u0000 干擾。
  • Collections.sort(list) 直接利用 Character.compareTo 按 Unicode 排序。
  • 使用 Closeable 統一關閉,簡潔健壯。

執行結果示例

輸入:Hello World!
輸出:!HWdellloor

(去除空格換行後,字符按碼點:!(33) H(72) W(87) d(100) e(101) l(108)...)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved