日记 Matlab :: 文本文件顶部的最新消息而不是附加到文件底部

Posted

技术标签:

【中文标题】日记 Matlab :: 文本文件顶部的最新消息而不是附加到文件底部【英文标题】:Diary Matlab :: Latest messages on top of the text file instead of append to bottom of file 【发布时间】:2015-06-22 09:45:31 【问题描述】:

diary 函数非常适合在我的应用程序中记录日志,但它不会将最新消息显示在文本文件顶部(这是我需要的方式),它会附加到旧消息中。

有什么方法可以预先附加消息而不是附加到文本文件中的旧消息或解决方法?

【问题讨论】:

文本文件是按顺序写入的,在顶部插入一些内容需要移动全部内容。 diary 不支持这一点,即使你能找到某种方法来破解它,它也会很慢。你能解释一下目的吗?也许有更好的方法来实现你想要的。可以想象一个自动滚动的文本编辑器,让你总能看到最近的数据会达到你想要的效果吗? 在解析/分组/分析文本数据后,我正在将“日记”生成的文本文件读取到 GUI 静态输出屏幕上,如果日志有顺序数据,我的 GUI 将在底部而不是填充在顶部。它是应用程序日志记录的快速解决方案。有这方面的指导吗? 您的 UI 是否也是用 m-code 或其他编程语言编写的? 使用matlab GUI,也许我只是尝试获取显示的消息并将差异添加到logGUI! 【参考方案1】:

翻转顺序应在 UI 中完成,此处不涉及 HDD 交互,这将使其更快。

在某些时候你需要打开日志文件并初始化你的数据结构:

fid = fopen('fgetl.m');
lines = 

现在只读取新行。重复这个循环:

tline = fgetl(fid);
new_line=false;
while ischar(tline)
    linesend+1 = fgetl(fid);
    new_line=true
end

为了显示,我建议在你的 UI 中只显示最后 n 行(选择一个值)以避免日志增长时变慢:

if new_line
    reversed=lines(end:-1:max(numel(lines)-n+1,1));
    %update your UI here with the text in reversed
end

最后,在程序结束时,您需要关闭文件:

fclose(fid);

【讨论】:

以上是关于日记 Matlab :: 文本文件顶部的最新消息而不是附加到文件底部的主要内容,如果未能解决你的问题,请参考以下文章

Flutter学习日记之自定义AppBar&顶部Tab切换

无法让 Matlab uicontrol 'text' 框定位在图形窗口的顶部

将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]

将 Matlab 输出保存到文件,而不是在屏幕上显示

Matlab文本对象回车问题+图外文本

matlab怎样用二进制的文本文件保存