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

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

e135ec189d80b92666d4c87eb90ce5b3.png

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

image.png

  • 思源笔记

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

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

    26377 引用 • 109692 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 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`
请输入回帖内容 ...

推荐标签 标签

  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 54 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • SQLite

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

    4 引用 • 7 回帖 • 1 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 119 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 118 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 36 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 37 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 234 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    134 引用 • 1127 回帖 • 108 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    93 引用 • 122 回帖 • 616 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 469 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 760 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 496 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 9 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    204 引用 • 1477 回帖
  • 小薇

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

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

    35 引用 • 468 回帖 • 762 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 1 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 280 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 395 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 267 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 8 关注