# SimpleTxtReader **Repository Path**: eersoft/SimpleTxtReader ## Basic Information - **Project Name**: SimpleTxtReader - **Description**: 一个简单的txt文件阅读器,阅读器,不编辑。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-30 - **Last Updated**: 2025-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimpleTxTReader - 高性能文本文件阅读器 一个基于 C# WPF 开发的高性能文本文件阅读器,专门设计用于处理超大文件(上百兆甚至上 G)。采用内存映射文件技术和虚拟化显示,确保流畅的阅读体验。 ## 功能特点 ### 核心功能 - ✅ **超大文件支持**:使用内存映射文件(Memory-Mapped File)技术,能够快速打开和处理上百兆甚至上 G 的文本文件 - ✅ **只读模式**:专注于阅读体验,不支持编辑功能 - ✅ **流畅滚动**:基于虚拟化技术和分页加载,确保超大文件也能流畅滚动查看 - ✅ **文件拖放**:支持将文本文件拖拽到窗口自动打开 - ✅ **分页浏览**:支持上一页/下一页翻页,提高浏览大文件的效率 ### 编码支持 - ✅ **自动编码检测**:智能识别文件编码格式(支持 BOM 检测和字符集分析) - ✅ **手动编码选择**:支持手动指定文件编码格式 - ✅ **编码切换**:运行时动态切换编码并重新加载文件 - ✅ **多编码支持**:UTF-8、GB2312、GBK、Big5、Shift-JIS、EUC-KR、ASCII、Unicode 等 ### 显示设置 - ✅ **字体设置**:可自定义字体族、字体大小 - ✅ **颜色设置**:可设置文本颜色和背景颜色 - ✅ **换行设置**:支持三种换行模式 - 不自动换行:显示水平滚动条,保持原始格式 - 按窗口宽度换行:自动根据窗口宽度换行 - 按字符数换行:可指定每行最大字符数(默认 80 字符) ### 主题支持 - ✅ **多主题切换**:内置多个主题供选择 - 经典主题:默认 Windows 样式 - 绿色终端:复古终端风格(护眼优化) - 琥珀主题:复古琥珀色(护眼优化) - 蓝色主题:复古蓝色(护眼优化) - 更多主题持续添加中... ### 搜索功能 - ✅ **全文搜索**:支持在超大文件中进行全文搜索 - ✅ **搜索窗口**:独立的搜索窗口,提供友好的搜索界面 - ✅ **搜索选项**: - 区分大小写 - 全词匹配 - 正则表达式支持 - ✅ **搜索结果导航**:支持查找下一个/上一个结果,搜索结果列表显示 - ✅ **搜索结果高亮**:搜索结果在文本中高亮显示 ### 其他功能 - ✅ **跳转到指定行**:快速跳转到文件的任意行(Ctrl+G) - ✅ **历史记录**: - 可选择启用/禁用文件打开历史记录 - 记录文件的阅读位置,下次打开时自动恢复 - 提供明确的清除浏览历史记录功能 - ✅ **状态栏信息**:显示文件名、总行数、可视行数、已加载范围等 - ✅ **缓存机制**:可配置的缓存大小和预加载页数,优化性能 ## 技术架构 ### 核心技术 - **.NET 8.0**:使用最新的 .NET 框架 - **WPF**:Windows Presentation Foundation 用户界面 - **内存映射文件**:MemoryMappedFileReader 实现高效文件读取 - **虚拟化显示**:基于 TextBlock 和分页加载实现 - **编码检测**:BOM 检测 + 字符集分析 ### 项目结构 ``` TxTReader/ ├── Core/ # 核心功能模块 │ ├── EncodingDetector.cs # 编码检测 │ ├── FileReader.cs # 文件读取核心(基础实现) │ ├── MemoryMappedFileReader.cs # 内存映射文件读取器(主要实现) │ ├── IFileReader.cs # 文件读取器接口 │ └── SearchEngine.cs # 搜索引擎 ├── Services/ # 服务层 │ ├── SettingsService.cs # 设置服务 │ └── ThemeService.cs # 主题服务 ├── UI/ # 用户界面 │ ├── MainWindow.xaml # 主窗口 │ ├── SettingsWindow.xaml # 设置窗口 │ ├── SearchWindow.xaml # 搜索窗口 │ ├── GoToLineWindow.xaml # 跳转到行窗口 │ ├── AboutWindow.xaml # 关于窗口 │ └── TextBlockTextControl.cs # 虚拟化文本显示控件 ├── App.xaml # 应用程序入口 ├── TxTReader.csproj # 项目文件 └── README.md # 说明文档 ``` ### 依赖项 - Microsoft.Extensions.DependencyInjection (8.0.0) - Microsoft.Extensions.Configuration (8.0.0) - System.Text.Encoding.CodePages (8.0.0) - 用于支持更多字符编码 ## 使用方法 ### 基本操作 1. **打开文件**: - 点击"文件" → "打开"或使用 `Ctrl+O` - 直接拖拽文本文件到窗口 - 支持所有文本格式文件 2. **编码设置**: - 自动检测:程序会自动识别文件编码(默认) - 手动选择:通过"编码"菜单选择特定编码 - 状态栏显示:当前文件编码显示在状态栏左侧 3. **搜索文本**: - 点击"编辑" → "查找"或使用 `Ctrl+F` 打开搜索窗口 - 输入搜索关键词,选择搜索选项(区分大小写、全词匹配、正则表达式) - 使用 `F3` 查找下一个,`Shift+F3` 查找上一个 - 在搜索结果列表中点击结果可快速跳转 4. **跳转到行**: - 点击"编辑" → "跳转到行"或使用 `Ctrl+G` - 输入行号,点击跳转按钮 - 可设置跳转后自动关闭窗口 5. **个性化设置**: - 点击"视图" → "设置"或使用 `Ctrl+,` 打开设置窗口 - 可设置字体、颜色、换行方式、缓存大小等 - 可启用/禁用历史记录功能 6. **主题切换**: - 点击"视图" → "主题"选择不同的主题 - 主题会立即应用到所有窗口 7. **换行模式切换**: - 点击"视图" → "换行"选择换行模式 - 支持不自动换行、按窗口宽度换行、按字符数换行 ### 快捷键 | 快捷键 | 功能 | |--------|------| | `Ctrl+O` | 打开文件 | | `Ctrl+W` | 关闭文件 | | `Ctrl+F` | 查找 | | `F3` | 查找下一个 | | `Shift+F3` | 查找上一个 | | `Ctrl+G` | 跳转到行 | | `Ctrl+,` | 打开设置 | | `Alt+F4` | 退出程序 | | `Page Up` | 上一页 | | `Page Down` | 下一页 | ## 性能优化 - **内存控制**:使用内存映射文件,即使处理 GB 级文件,内存占用通常 < 100MB - **启动速度**:文件打开时间 < 2 秒(包含编码检测) - **滚动响应**:滚动延迟 < 50ms - **搜索速度**:支持异步搜索,不阻塞 UI - **分页加载**:按需加载页面,提高显示效率 ## 系统要求 - **操作系统**:Windows 10/11 - **.NET 版本**:.NET 8.0 Runtime - **内存**:建议 4GB 以上(处理超大文件时建议 8GB+) - **存储**:50MB 可用空间 ## 编译和运行 ### 环境准备 1. 安装 Visual Studio 2022 或更高版本 2. 安装 .NET 8.0 SDK 3. 确保 WPF 开发工具已安装 ### 编译步骤 1. 克隆或下载项目代码: ```bash git clone https://gitee.com/eersoft/SimpleTxtReader.git cd SimpleTxtReader ``` 2. 还原 NuGet 包: ```bash dotnet restore ``` 3. 编译项目: ```bash dotnet build ``` 4. 运行程序: ```bash dotnet run ``` ### 发布版本 ```bash # 发布为单文件可执行程序(自包含) dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true # 发布为依赖框架的版本 dotnet publish -c Release -r win-x64 --self-contained false ``` 发布后的文件位于 `bin/Release/net8.0-windows/win-x64/publish/` 目录。 ## 开发历史 本项目开发过程中的主要版本: - **v0.5** (iconOK) - 图标功能完善 - **v0.41** - 功能优化 - **v0.4** - 添加新功能 - **v0.35** - 性能和稳定性改进 - **v0.3** - 添加工具栏按钮 - **v0.2** - 翻页、历史记录、搜索功能正常 - **v0.1** - 初始版本,基础功能实现 ## 开发计划 ### 已完成功能 - [x] 基础文件读取和显示 - [x] 编码检测和切换 - [x] 虚拟化滚动和分页 - [x] 文件拖放支持 - [x] 全文搜索功能(含正则表达式) - [x] 搜索窗口 UI - [x] 搜索结果高亮 - [x] 设置和历史记录 - [x] 主题支持 - [x] 跳转到指定行 - [x] 多种换行模式 - [x] 图标和窗口美化 ### 待实现功能 - [ ] 多标签页支持 - [ ] 书签功能 - [ ] 打印功能 - [ ] 导出功能(导出为 PDF、HTML 等) - [ ] 更丰富的主题选项 - [ ] 自定义快捷键 - [ ] 文本统计信息(字符数、字数等) ## 贡献指南 欢迎提交 Issue 和 Pull Request 来改进这个项目。 ### 开发规范 - 使用 C# 12 语法特性 - 遵循 .NET 编码规范 - 添加适当的 XML 文档注释 - 编写单元测试(计划中) ### 提交规范 - 使用清晰的提交信息,推荐使用中文(注意确保 Git 编码配置正确) - 每次提交保持单一功能或修复 - 提交前确保代码可以编译通过 ## 许可证 本项目采用 MIT 许可证,详见 LICENSE 文件。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交 [Gitee Issue](https://gitee.com/eersoft/SimpleTxtReader/issues) - 仓库地址:https://gitee.com/eersoft/SimpleTxtReader.git --- **SimpleTxTReader** - 让超大文本文件的阅读变得简单高效!