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

Java 實現文本轉 HTML 網頁生成器:支持代碼高亮與特殊字符轉義

     編輯:Java 相關知識

需求背景

將純文本文件(含代碼片段)自動轉換為可瀏覽的 HTML 網頁,需求包括:保留換行、空格轉義、代碼塊高亮顯示、特殊字符安全轉義。

核心架構:分層設計

  • FileHelper:底層文件讀寫工具類
  • WebpageMaker:業務邏輯層,負責文本解析與 HTML 生成

FileHelper:文件讀寫基礎

import java.io.*;

public class FileHelper {
    public static String readFile(String filename) throws Exception {
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\r\n");
            }
        }
        return content.toString();
    }

    public static void writeFile(String content, String filename) throws Exception {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
            writer.write(content);
        }
    }
}

WebpageMaker:核心轉換邏輯

import java.util.StringTokenizer;

public class WebpageMaker {
    private static final String HTML_BEGIN = "\r\n";
    private static final String HTML_END = "\r\n\r\n";

    public static void createPage(String inputFile, String outputFile) throws Exception {
        String content = FileHelper.readFile(inputFile);
        StringTokenizer st = new StringTokenizer(content, "\r\n");
        StringBuilder html = new StringBuilder(HTML_BEGIN);

        boolean inCodeBlock = false;

        while (st.hasMoreTokens()) {
            String line = st.nextToken();
            int len = line.length();

            for (int i = 0; i < len; i++) {
                // 檢測代碼塊標記  ... 
                if (i + 6 <= len && line.substring(i, i + 6).equals("")) {
                    inCodeBlock = true;
                    html.append("
");
                    i += 5;
                    continue;
                }
                if (i + 7 <= len && line.substring(i, i + 7).equals("")) {
                    inCodeBlock = false;
                    html.append("
"); i += 6; continue; } char c = line.charAt(i); // 特殊字符轉義 switch (c) { case '"': html.append("""); break; case '&': html.append("&"); break; case '<': html.append("<"); break; case '>': html.append(">"); break; case ' ': html.append(" "); break; case '\t': html.append("    "); break; default: html.append(c); } } if (!inCodeBlock) { html.append("
\r\n"); } else { html.append("\r\n"); } } html.append(HTML_END); FileHelper.writeFile(html.toString(), outputFile); } public static void main(String[] args) throws Exception { createPage("D://test.txt", "D://test.html"); } }

測試樣例與效果

輸入文件 (test.txt)

hello world! 大家好:)
#include 
int main() {
    printf("hello world!\n");
    return 0;
}

生成 HTML (test.html)


hello world!
大家好:)
#include <stdio.h>
int main() {
    printf("hello world!\n");
    return 0;
}

瀏覽器渲染效果

hello world! 大家好:)
#include <stdio.h>
int main() {
    printf("hello world!\n");
    return 0;
}

擴展建議

  • 引入 highlight.js 實現多語言語法高亮
  • 支持 Markdown 語法解析(可集成 flexmark-java)
  • 添加 CSS 樣式表美化頁面佈局
  • 實現命令行參數解析,支援批量轉換

這個簡單生成器展示了 Java 處理文本、生成 HTML 的核心思路,可作為文檔自動化工具的起點。

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