我的程序与别人的程序(我无法控制)之间,如何同时读写文件而不冲突?

hslow 2008-07-16 11:47:04
  别人的程序对文件进行定时写操作,大概5秒写一次,写完会关闭文件。我的程序对该文件进行读操作,读完也会关闭文件。
  我想问:在我打开文件前,如何判断别人程序正在对文件进行写操作,从而推迟打开以避免冲突??难道不停尝试打开该文件直到成功为止??
  请赐教!
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nextsea 2008-07-17
  • 打赏
  • 举报
回复
用文件监视器.

private static void FileWatch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = System.Environment.CurrentDirectory; //路径
watcher.NotifyFilter = NotifyFilters.LastWrite; //监视方式,这里选择的是最后一次写入
watcher.Filter = "要监视的文件.txt";
watcher.Changed += new FileSystemEventHandler(watcher_Changed); //触发事件
watcher.EnableRaisingEvents = true;
}

static void watcher_Changed(object sender, FileSystemEventArgs e)
{
//写入读操作

}
rangeon 2008-07-17
  • 打赏
  • 举报
回复
好像也只有 try and try
bwangel 2008-07-17
  • 打赏
  • 举报
回复
用Timer控件,每隔一段时间(比如0.5秒)在后台轮询一次文件的状态,同时还可以做别的工作.
如果文件打开对程序继续运行是必要的条件,那就只有等啰,不过应该不会等多久的.写文件只是一瞬间的事.
hslow 2008-07-17
  • 打赏
  • 举报
回复
谢谢楼上各位
发表于 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nextsea 的回复:]
用文件监视器.

private static void FileWatch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = System.Environment.CurrentDirectory; //路径
watcher.NotifyFilter = NotifyFilters.LastWrite; //监视方式,这里选择的是最后一次写入
watcher.Filter = "要监视的文件.txt";
watcher.Changed += new …
[/Quote]
自己保存后也会触发事件
内容概要:本文从程序的视角深入解析了文件操作的核心机制,重点阐述了输入输出的数据流向与函数使用规则。程序通过函数接收外部数据并存入内存,数据来源包括键盘、文件和内存,输出目标则为屏幕、文件或内存。文中详细区分了以“f”开头的文件操作函数(如fscanf、fprintf、fgetc、fputc等)与以“s”开头的内存操作函数(如sscanf、sprintf),强调前者用于文件/屏幕与内存之间的数据交换,后者仅限内存间操作。同时讲解了文件光标的概念及其控制函数fseek、ftell、rewind的作用,并指出fflush在读写切换时的重要性,确保数据正确写入或避免操作冲突。; 适合人群:具备C语言基础,正在学习系统级编程或文件操作的初学者及中级开发者;尤其适合对标准I/O库函数使用存在困惑的程序员。; 使用场景及目标:①理解程序中输入输出的本质与数据流动路径;②掌握常见文件操作函数的参数顺序与使用规范;③熟悉文件光标管理与读写模式切换时的注意事项,提升文件读写程序的健壮性与正确性; 阅读建议:学习时应结合代码实践,重点关注各类函数的参数顺序差异及fflush的应用时机,通过调试观察光标变化与缓冲区行为,加深对文件操作底层逻辑的理解。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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