trzsz / trzsz-go

trzsz-go is the go version of trzsz, makes all terminals that support local shell to support trzsz ( trz / tsz ).
https://trzsz.github.io/go
MIT License
884 stars 53 forks source link

下载动态变化的文件问题 #34

Closed zundaren closed 1 year ago

zundaren commented 1 year ago

日志文件一直在变化,如果我不打包直接下载会产生read size不等于原始大小问题,这个需要优化吗 image

lonnywong commented 1 year ago

我确实没考虑过会下载动态变化的文件的场景。

现在 Go 版的做法是打开文件前会先 stat 一下文件的大小,然后读文件直到 EOF,如果大小不等就报错了。

Python 和 Js 版还是旧的( 这两个还不支持流式传输,还没调整这里的逻辑 ),就不是读文件直到 EOF,而只是读到 stat 得到的文件大小。

看来,可以改回 Python 和 Js 那样,只读到一开始 stat 得到的大小?

zundaren commented 1 year ago

我确实没考虑过会下载动态变化的文件的场景。

现在 Go 版的做法是打开文件前会先 stat 一下文件的大小,然后读文件直到 EOF,如果大小不等就报错了。

Python 和 Js 版还是旧的( 这两个还不支持流式传输,还没调整这里的逻辑 ),就不是读文件直到 EOF,而只是读到 stat 得到的文件大小。

看来,可以改回 Python 和 Js 那样,只读到一开始 stat 得到的大小?

只读到一开始的stat,对使用者来说更加方便了,不需要额外操作

lonnywong commented 1 year ago

OK,我周末调整一下 Go 版的逻辑。你现在可以试试 Py 版,也是兼容的,只是不再用流式传输,会稍微慢一点点。

engcn commented 1 year ago

只是不再用流式传输,会稍微慢一点点。

为了修复这个问题,Go 版要去掉流式传输吗?

zundaren commented 1 year ago

只是不再用流式传输,会稍微慢一点点。 为了修复这个问题,Go 版要去掉流式传输吗?

只是读到指定大小结束,和流没什么关系

lonnywong commented 1 year ago

@engcn 那肯定不会去掉流式的功能呀,我花了挺长的时间才写出来的。 以后,另个两个版本也会实现,只是他们没有 Go 写起来那么方便。

engcn commented 1 year ago

哦哦

lonnywong commented 1 year ago

@zundaren 应该支持了,可以安装最新的试试:

go install github.com/trzsz/trzsz-go/cmd/trz@main
go install github.com/trzsz/trzsz-go/cmd/tsz@main
go install github.com/trzsz/trzsz-go/cmd/trzsz@main