搜索
编程论坛
→
数据库技术
→
『 VFP论坛 』
→ Adir() 获取文件大小时,不能实时更新?
标题:
Adir() 获取文件大小时,不能实时更新?
只看楼主
琅拿度
等 级:
新手上路
帖 子:148
专家分:5
注 册:2016-4-7
结帖率:
84.62%
楼主
已结贴
√
问题点数:20 回复次数:26
Adir() 获取文件大小时,不能实时更新?
Adir(dx,'文件名') && 文件是慢慢变大的,变大的过程未停止
?dx[2] && 得到的大小不是实时的,如果要得到实时的,必须要在win7界面刷新一下才行,有什么方法解决?
2016-09-20 20:43
红星二锅头
等 级:
贵宾
威 望:
46
帖 子:491
专家分:754
注 册:2016-8-25
第
2
楼
得分:0
有三种方法可以解决。
API / WSH / WMI......
多看孩儿爬 (Help)
团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-20 21:22
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
3
楼
得分:5
观察了一下是实时更新的,是不是更新的内容还在缓存,没有存盘?
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
2016-09-20 22:37
琅拿度
等 级:
新手上路
帖 子:148
专家分:5
注 册:2016-4-7
第
4
楼
得分:0
以下是引用
吹水佬
在2016-9-20 22:37:34的发言:
观察了一下是实时更新的,是不是更新的内容还在缓存,没有存盘?
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
你的代码是完成后再去看大小,我要做的是VFP去监控一个文件的大小(而这个文件不是VFP去改变大小的,而是另外的程序,这个文件不断变大的)
我的adir 是用timer去定时监控的,但是确一直得到不是实时的数值,要刷新一下才可以得到真实的值。
2016-09-20 22:50
tlliqi
等 级:
贵宾
威 望:
204
帖 子:15453
专家分:65956
注 册:2006-4-27
第
5
楼
得分:5
回复 4楼 琅拿度
要手动刷新?
2016-09-21 07:31
琅拿度
等 级:
新手上路
帖 子:148
专家分:5
注 册:2016-4-7
第
6
楼
得分:0
以下是引用
tlliqi
在2016-9-21 07:31:41的发言:
要手动刷新?
是,在win7的资源管理器刷新一下,就可以
(资源管理器也有文件大小的信息,比如刷新前的值是20M, 文件在不断增大,比如过了10分钟,实际大小是80M,它还是显示20M,资源管理器的文件大小也是不实时的,你刷新了才显示80M,我猜是这样的,因为文件还在变动之中,就是不断增大,所以windows也懒得去实时更新,只有windows看到文件没有写入动作了才更新)
2016-09-21 08:11
红星二锅头
等 级:
贵宾
威 望:
46
帖 子:491
专家分:754
注 册:2016-8-25
第
7
楼
得分:0
ReadDirectoryChangesW API + WindowsEvents
团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-21 08:17
红星二锅头
等 级:
贵宾
威 望:
46
帖 子:491
专家分:754
注 册:2016-8-25
第
8
楼
得分:0
也有很多第三方的控件、动态库
也可以使用多进程、多任务调度
办法总比困难多
[此贴子已经被作者于2016-9-21 09:22编辑过]
团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-21 09:20
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
9
楼
得分:0
以下是引用
琅拿度
在2016-9-20 22:50:44的发言:
你的代码是完成后再去看大小,我要做的是VFP去监控一个文件的大小(而这个文件不是VFP去改变大小的,而是另外的程序,这个文件不断变大的)
我的adir 是用timer去定时监控的,但是确一直得到不是实时的数值,要刷新一下才可以得到真实的值。
不是VFP自己处理的文件就被动了。
可以试试:
1、用VFP的低级文件操作函数。
SET COMPATIBLE ON
? FSIZE(...)
SET COMPATIBLE OFF
或
FOPEN() + FSEEK() 计算
2、调用 WinAPI CreateFile() 获取文件相关信息。
[此贴子已经被作者于2016-9-21 10:56编辑过]
2016-09-21 10:53
hyswcyh
等 级:
贵宾
威 望:
20
帖 子:391
专家分:896
注 册:2004-11-23
第
10
楼
得分:5
学习一下,实时处理,是不是你的timer时间间隔太小了。
2016-09-21 11:44
27
1/3页
1
2
3
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-468992-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.146899 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved