当我调用FileInfo(path).LastAccessTime或FileInfo(path).LastWriteTime正在写入的文件时,它返回创建文件的时间,而不是上次写入文件的时间(即现在).
有没有办法获得这些信息?
编辑:到目前为止的所有回复.我没有尝试,Refresh()但也没有尝试过.我返回文件开始写入的时间.静态方法也是如此,并创建了一个新的实例FileInfo.
Codymanix可能有答案,但我没有运行Windows Server(使用Windows 7),我不知道设置的测试位置.
编辑2:没有人觉得这个功能似乎不起作用很有趣?
有没有人在框架4中使用过FileSystemWatcher并且遇到过任何问题?
我在Windows服务中使用它,我无法承受它失败.
我从朋友那里听说它不太可靠,但我现在已经测试了几个小时,我没有遇到任何问题,但我仍然怀疑使用它.....
我将不胜感激任何有关此事的建议,我不想将应用程序交付给客户,然后意识到这件事会崩溃....
谢谢
谢谢你们的建议
我想我的目的应该没问题.它将检查服务器本地驱动器上的文件夹,所有检查是否文件已被修改,所以我认为它应该没问题
删除文件后刷新文件列表时出现问题.当我命令删除文件时,抛出了异常,因为刷新方法试图访问应该删除的文件.
经过一番思考和调试后,我得出结论,问题在于系统需要一些时间来删除文件.我这样解决它:
//Deleting file
System.Threading.Thread.Sleep(2000);
//Refreshing list
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
我的问题是
是否有更优雅的方式等待系统删除文件,然后继续代码...?
我有两个在同一台机器上运行的.net应用程序.第一个应用程序是"引擎".它构建图像 - 图像的大小约为4M.第二个应用程序是"查看器".它显示了"引擎"发送的图像.引擎每10-15秒发送一次图像.
我的问题是将图像从引擎传递给观看者的麻烦方法是什么.目前,我正在使用FileSystem.引擎将图像写入文件系统文件夹,并使用FileSystemWatcher将查看器获取此文件.
那方法好吗?这可靠吗?
什么是await外部应用程序创建文件最干净的方法?
async Task doSomethingWithFile(string filepath)
{
// 1. await for path exists
// 2. Do something with file
}
Run Code Online (Sandbox Code Playgroud) 我打算创建一个应用程序,它将查看创建的任何文件的目录.非常简单的时间来使用filesystemwatcher.我的问题涉及如何利用它.通常的做法是使用Windows服务来确保应用程序始终运行?
我一直试图摆脱构建Windows服务,如果我不需要,但我真的没有看到在这种情况下这样做的替代方案.通常,我会将我的服务转换为控制台应用程序并使用Windows调度程序安排它,但这并不适用于这种情况.
任何人都可以推荐一种比Windows服务更好的方式来实现filesystemwatcher吗?
谢谢你的想法.
编辑 以回应下面的评论,更具体地说,我只需要在服务器上查看目录,并且当创建新文件时,我必须将该文件的副本移动到同一服务器上的不同目录中,也许重命名它在这个过程中.
文件的频率和数量将非常小.一天最多可能5-10.
如何避免C#中FileSystemWatcher的错误?
目录中一次更改太多
我必须检测网络共享上的所有更改.InternalBufferSize增加到8192*128
检查添加到目录中的新文件的最佳方法是什么,我不认为filesystemwatcher是合适的,因为这不是一个始终在线服务,而是一个在我的程序启动时运行的方法.
我正在监视的文件夹结构中有超过20,000个文件,目前我正在单独检查每个文件以查看文件路径是否在我的数据库表中,但这需要大约十分钟而且我想加快它是可能的,
我可以存储上次检查文件夹的日期 - 是否可以轻松获取所有具有createddate的文件>上次检查日期.
谁有任何想法?
谢谢
标记
在wpf中,我有一个文本框,它的内容来自txt文件.
在代码behine看起来像:
public MyWindow()
{
InitializeComponent();
ReadFromTxt();
}
void Refresh(object sender, RoutedEventArgs e)
{
ReadFromTxt();
}
void ReadFromTxt()
{
string[] lines = System.IO.File.ReadAllLines(@"D:\Log.txt");
foreach (string line in lines)
{
MyTextBox.AppendText(line + Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是txt文件内容在运行时期间正在发生变化,是否可以与这些更改同步?我的意思是如果改变txt文件,文本框内容将会改变.如果有可能请提供一些代码示例ic#或XAML.
我现在的解决方案是我创建了一个"刷新"按钮,可以从txt文件中再次读取
我有一个具有以下结构的文件夹
Parent/
Child1/
GrandChild1/
File1.txt
Run Code Online (Sandbox Code Playgroud)
我需要查询父文件夹并找出 Child1 是否已更改。
已更改 = 添加/更新/删除了新文件。
Child1 文件夹 DateModified 未更新。发生更改时,仅更新 GrandChild1 修改日期。我试图避免进入文件级别来确定 rootparent 是否已更改。因为会有很多文件夹和子文件夹。我只需要知道 Child1 是否已更改。
我不想使用 FileSystemWatcher,因为我将此作为计划作业运行,而不是实时观看。
c# ×9
.net ×5
directory ×2
filesystems ×2
async-await ×1
delete-file ×1
file ×1
fileinfo ×1
subdirectory ×1
windows ×1
wpf ×1
xaml ×1