VB 中怎样检查一个文件已经被打开

hzhiyang84 2008-04-09 11:11:50
我在VB中要根据时间打开一个文件:

FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
程序中有时候Close语句会不被执行,
我该怎样判断这个文件已经被打开呢?

...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqq7072000 2008-04-09
  • 打赏
  • 举报
回复
搞错了,不好意思!
lqq7072000 2008-04-09
  • 打赏
  • 举报
回复

Dim rst As Integer
rst = FileExists(path & FileName) '完整文件路径
If rst = True Then
'文件打开了
end if
diablofriend 2008-04-09
  • 打赏
  • 举报
回复
不好意思刚测试了一下 ERR.number=55

你可以写个错误捕获么,判断错误号码,我没记错的话err.number=55的
On Error GoTo Err_Function
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
....


Err_Function
if err.number=55 then
MsgBox "文件已被打开"
exit function
end if
迈克揉索芙特 2008-04-09
  • 打赏
  • 举报
回复
Open FileName For Output As #235
....
IF IsOpen(235) THEN
Close #235
END IF

Private Function IsOpen(f As Integer) As Boolean
On Error GoTo err
LOF f
IsOpen = True
err:
End Function
diablofriend 2008-04-09
  • 打赏
  • 举报
回复
不好意思,刚测试了一下,err.number=55
diablofriend 2008-04-09
  • 打赏
  • 举报
回复
你可以写个错误捕获么,判断错误号码,我没记错的话err.number=70的
On Error GoTo Err_Function
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
....


Err_Function
if err.number=70 then
MsgBox "文件已被打开"
exit function
end if
caofusheng 2008-04-09
  • 打赏
  • 举报
回复
通过文件的属性 或者 关闭出错时的错误ID来判断
hzhiyang84 2008-04-09
  • 打赏
  • 举报
回复
谢谢,不好意思,没学过VB,所以不是很懂
diablofriend 2008-04-09
  • 打赏
  • 举报
回复
modest不是已经给你写了如果判断是打开的则关闭么,
你可以先判断是否已经打开,如果打开则不执行打开的代码,
而直接执行...里面的代码吧!多想想么!


IF IsOpen(235) THEN
....
else
Open FileName For Output As #235
...
END IF

Private Function IsOpen(f As Integer) As Boolean
On Error GoTo err
LOF f
IsOpen = True
exit function
hzhiyang84 2008-04-09
  • 打赏
  • 举报
回复
谢谢大家,刚才没说清楚
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235

....里的语句一定要执行.如果文件已经被打开,就关闭它
看了你们说的后,
我这样写不知道行不行


FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
On Error Go Err_OpenFile
Open FileName For Output As #235
Goto Start
Err_OpenFile:
if err.number = 55
close #235
Open FileName For Output As #235
end if
Start:....
Close #235

有没有更好的方法呢

不过貌似我这边的问题不是这个,好像我的错误号是52,不知道是什么引起的

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧