标题:如何关闭已经打开的txt文本
只看楼主
hsktm
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2012-9-24
结帖率:0
 问题点数:0 回复次数:2 
如何关闭已经打开的txt文本
前提:文件在程序运行前是打开的,程序启动后,运行中判断出文本被打开,此时如何关闭?
尝试了类似的操作
  FileStream fs2 = File.Create(@file);//类似的还有很多都不行,报错进程打开(因为文本打开状态)
  fs2.CLose();
file是string格式的路径信息,(文件是程序建立的,关闭程序后我先打开文本,然后我再运行程序)。执行读取等操作的时候会报错,提示进程已经打开。
create 只是这里的一个例子,其他的我也试验了 都会报错
我想加到catch中,通过关闭这个文件,对这个错误进行处理。
搜索更多相关主题的帖子: 运行程序 create 如何 file 信息 
2014-01-22 11:50
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
关键看文件是谁打开的  谁打开谁关闭   你想关闭其他进程打开的文件估计会很难吧

DO IT YOURSELF !
2014-01-22 12:46
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:0 
程序代码:
using using System.Runtime.InteropServices;

[DllImport("kernel32.dll")]
public static extern IntPtr _lopen(string lpPathName, int iReadWrite);

[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject);

public const int OF_READWRITE = 2;
public const int OF_SHARE_DENY_NONE = 0x40;
public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
private void button1_Click(object sender, EventArgs e)
{
    string vFileName = @"c:\temp\temp.bmp";
    if (!File.Exists(vFileName))
    {
        return;
    }
    IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
    if (vHandle == HFILE_ERROR)
    {
        //文件被占用
          using (Process p = new Process())
             {
                 p.StartInfo = new ProcessStartInfo("C:\\a.txt");
                 p.Start();
                 p.WaitForExit();
             }
    }
   
    CloseHandle(vHandle);
}
临时写的 没测 你看看这个DEMO 做个参考

[ 本帖最后由 wangnannan 于 2014-1-22 13:00 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-01-22 12:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426744-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017144 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved