c# - if else 语句中 file.exist 语句的 C# 问题
问题描述
我目前正在做一个学校项目,其中程序使用 filesystemwatcher 来监视文件并在检测到文件时复制到其他文件夹。但是,只要文件有更新,它就会将其保存为 _update.txt,并使用我制作的 copy() 函数附加到后面。
问题是有时程序将其重命名为更新,即使它是文件的第一个实例。复制功能工作正常。真的很感激,因为我是一个编程新手!
代码如下:
try
{
String dest = "inputTextBox.text" + "\\";
String fileName = e.Name;
if (!File.Exist(dest + fileName))
{
try
{
copy("");
}
catch(Exception e)
{
return;
}
}
else if (File.Exist(dest + fileName))
{
try
{
copy("update.txt");
}
catch(Exception e)
{
return;
}
}
}
catch (Exception e)
{
return;
}
解决方案
我认为你应该使用FileSystemWatcher来完成你的任务。将Filter设置为您的文件名并订阅Created事件。
例如:
static void Main(string[] args)
{
var watcher = new FileSystemWatcher //
{
Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), //Set watching to MyDocuments folder
InternalBufferSize = 32 * 1024, // set 32KB buffer size (it's a maximal size)
Filter = "*", //Set filter to all file types
NotifyFilter = NotifyFilters.FileName, //We need this notify type for watch creating files
EnableRaisingEvents = true //Begin watcing
};
watcher.Created += (s, e) => //subscribe lambda to "created" event
{
Console.WriteLine($"{e.FullPath} created");
Task.Delay(1000).Wait();
try
{
File.Copy(e.FullPath, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "updated", $"{e.Name}-{Guid.NewGuid()}"));
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
};
Console.ReadLine(); //waiting
}
我在控制台应用程序中测试了这段代码。当应用程序运行时,尝试在 MyDocuments 文件夹中创建一个文件。该程序将发送有关创建文件的消息并将它们复制到“更新”文件夹中。
推荐阅读
- javascript - 制作 2 个不同存储的柜台
- mongodb - 使用特定文档的过滤器计算 mongo 数组中的元素数
- javascript - Asp.net C#在插入记录之前用JS确认对话框检查条件不触发为什么?
- javascript - 在不同的选择标签中附加带有值的选项标签
- progressive-web-apps - PWA - 如何指定版本?
- c# - 如何在c#中比较两个数组并计算相等的项目
- python - 在 Python 中,在循环中使用三个函数,其中第三个函数的输出是所有三个函数的新输入
- python-3.x - 将 CSS 与 Bottle 连接起来
- excel - Excel VBA 在特定单元格中添加值
- android - 如何在同一个 Realm 查询中查询两个字段?