思源笔记遇到文档异常占用空间及崩溃问题

在今天使用思源笔记的过程中遇到了一些严重问题:
有一个文档在软件中显示大小为 1.04GB,但导出后仅有 2.9MB,而且导出再重新导入该文档后,在思源中仍显示为 1.04GB,不清楚造成这一问题的具体原因。

e135ec189d80b92666d4c87eb90ce5b3.png

此外,一旦点击这个“输入”文档,思源界面就会出现白屏,无法正常使用,只能强制退出应用。

image.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26178 引用 • 108738 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • louloulou via macOS

    补一下文档的信息

    image.png

    复制了以后也是一样

    image.png

  • 把文档上传一下,或者私信给我看看

    1 回复
  • louloulou via macOS

    好的!已经在网站私信发过去啦

  • 你这个文件大得离谱

    image.png

    image.png

    大部分数据都被压缩掉了,说明有极大量的重复数据:

    image.png

    我用记事本看了一下,整个文件绝大部分是 换行 制表符,是怎么弄出来的?你有印象在这个文档里做了什么操作吗?

    image.png

    1 回复
    1 操作
    JeffreyChen 在 2025-06-09 23:49:35 更新了该回帖
  • louloulou via macOS

    😳 我就是正常打字, 思源打开来显示是正常的,但是我的确感觉我使用搜索功能很慢. 云储存功能在几个月前出过问题, 可能是这个原因?

    那现在这个文档这样, 我该怎么解决呀 😭

    1 回复
  • JeffreyChen 1 1 赞同 1 评论

    解决方案已私信。这里备注一下我处理文件用到的 C 程序(由 Cursor 生成)和提示词:

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFFER_SIZE 4096 // gcc replace_tabs.c -o replace_tabs // ./replace_tabs largefile.json output.json int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "用法: %s 输入文件 输出文件\n", argv[0]); return 1; } FILE *input = fopen(argv[1], "r"); if (!input) { fprintf(stderr, "无法打开输入文件: %s\n", argv[1]); return 1; } FILE *output = fopen(argv[2], "w"); if (!output) { fprintf(stderr, "无法创建输出文件: %s\n", argv[2]); fclose(input); return 1; } char buffer[BUFFER_SIZE]; size_t bytes_read; int in_escape = 0; int found_tab = 0; int last_char = EOF; while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, input)) > 0) { for (size_t i = 0; i < bytes_read; i++) { char current = buffer[i]; if (in_escape) { if (current == 't') { if (!found_tab) { fputc('\\', output); fputc('t', output); found_tab = 1; } } else { if (found_tab) { found_tab = 0; } fputc('\\', output); fputc(current, output); } in_escape = 0; } else if (current == '\\') { in_escape = 1; } else { if (found_tab) { found_tab = 0; } fputc(current, output); } last_char = current; } } fclose(input); fclose(output); return 0; }
    我这里有个出现异常的 JSON 文件 largefile.json,文件大小 982 MB,其中至少 980 MB是转义的制表符 `\t`(包含 `\` 与 `t` 两个字符的字符串),体积太大以至于没有哪个软件能够打开这个文本文件了(无法确定 JSON 结构是否损坏,但不重要),请写一个 C 程序将文本中的连续出现的 `\t` 合并为一个
    超级感谢!!!已经解决啦!刚开始学 C😭
    louloulou
  • 不对,我的处理方式有问题,你先不要用这个文档,等我抽空再看看。

    我突然发现你有很多代码块,代码块里用了制表符缩进,这个方法会把你的缩进都干掉。

  • 我换了个方法处理,最后再手动修改了一下文件。

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFFER_SIZE 4096 #define TAB_SEQUENCE_LENGTH 30 int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "用法: %s <输入文件> <输出文件>\n", argv[0]); return 1; } FILE *input = fopen(argv[1], "r"); if (!input) { fprintf(stderr, "无法打开输入文件: %s\n", argv[1]); return 1; } FILE *output = fopen(argv[2], "w"); if (!output) { fprintf(stderr, "无法打开输出文件: %s\n", argv[2]); fclose(input); return 1; } char buffer[BUFFER_SIZE]; char tab_buffer[BUFFER_SIZE]; int tab_count = 0; int in_string = 0; int escape_next = 0; size_t bytes_read; while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, input)) > 0) { for (size_t i = 0; i < bytes_read; i++) { if (escape_next) { if (buffer[i] == 't') { tab_buffer[tab_count++] = '\\'; tab_buffer[tab_count++] = 't'; if (tab_count >= TAB_SEQUENCE_LENGTH * 2) { // 跳过这30个\t tab_count = 0; } } else { // 如果不是\t,输出之前缓存的字符 if (tab_count > 0) { fwrite(tab_buffer, 1, tab_count, output); tab_count = 0; } fputc('\\', output); fputc(buffer[i], output); } escape_next = 0; } else { if (buffer[i] == '\\') { escape_next = 1; } else { // 如果不是转义序列,输出之前缓存的字符 if (tab_count > 0) { fwrite(tab_buffer, 1, tab_count, output); tab_count = 0; } fputc(buffer[i], output); } } } } // 输出剩余的tab_buffer内容 if (tab_count > 0) { fwrite(tab_buffer, 1, tab_count, output); } fclose(input); fclose(output); return 0; }
    [背景信息] 我这里有个出现异常的 JSON 文件 largefile.json,文件大小 982 MB,其中至少 981 MB是转义的制表符 `\t`(包含 `\` 与 `t` 两个字符的字符串),JSON 结构是正常的。 存在异常的 JSON 示例: { "Type": "NodeText", "Data": "\t\t\t\t\t\t\t\t\t\t\t\t\t" }, [需求] 请写一个 C 程序流式处理整个 JSON 字符串,每连续出现30次的 `\t` 字符串,就删除:`\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`
请输入回帖内容 ...

推荐标签 标签

  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 281 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 2 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 3 关注
  • 996
    13 引用 • 200 回帖 • 3 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    82 引用 • 412 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 4 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • OneNote
    1 引用 • 3 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 179 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖 • 3 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 765 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 2 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 767 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 2 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Excel
    31 引用 • 28 回帖
  • OpenCV
    15 引用 • 36 回帖 • 2 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    372 引用 • 1857 回帖
  • AWS
    11 引用 • 28 回帖 • 8 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 3 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 253 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 647 关注