C# 每x秒读取一次更新的文本文件
我正在制作一个程序,从绘图应用程序读取文本文件中的xy坐标。我认为坐标集将从绘制线的起点到终点开始被检测。对于绘制的每条线,将有一组新的xy坐标。然后我想制作一个程序C# 每x秒读取一次更新的文本文件,c#,visual-studio,file,coordinates,C#,Visual Studio,File,Coordinates,我正在制作一个程序,从绘图应用程序读取文本文件中的xy坐标。我认为坐标集将从绘制线的起点到终点开始被检测。对于绘制的每条线,将有一组新的xy坐标。然后我想制作一个程序 每x秒查找更新的xy坐标集 如果更新了文本文件,我希望在控制台中写入文本文件的新内容 如果文件尚未更新,我不希望它做任何事情 我还想知道最好的办法是 是否有一个文本文件使用新的xy坐标集更改其内容 或者使用一个文本文件,将新的xy坐标集与以前的坐标集相加 或者为每一组新的xy坐标创建一个新的文本文件 我对编程非常陌生,如果能得到一
class Test
{
public static void Main()
{
while (true)
{
try
{
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
}
catch (Exception e)
{
Console.WriteLine("This file doesn't excist:");
Console.WriteLine(e.Message);
}
Thread.Sleep(2000);
}
}
}
按如下方式初始化观察程序:
FileSystemWatcher watcher = new FileSystemWatcher(_folder_name_)
{
NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size
};
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
事件处理程序:
void watcher_Changed(object sender, FileSystemEventArgs e)
{
if (e.Name == "TestFile.txt")
using (StreamReader sr = new StreamReader(e.FullPath))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
}
另一种方法是使用系统.Threading.Timer
如果文本以增量方式附加到文件中,我建议您使用数据库、套接字等代替文件。非常感谢您的快速回答和帮助!:) 就在我看到你的答案之前,我正在研究另一种方法。当文本文件存在时,该文本文件将被读写到控制台。当它被读取时,它将被删除,并等待另一个文本文件出现(另一组xy坐标)。我不打算让程序写“等待新文件…”最后,我只是想看看事情按照我一直在想的方式进行。此外,我认为Web应用程序需要接收某种消息,即文本文件已被读取,现在可以接收新的文本文件 如果这也是一种不错的方式,你有什么想法吗
class Testing
{
public static void Main()
{
string fileName = "TestFile.txt";
while (true)
{
if(File.Exists(fileName))
{
using (StreamReader sr = new StreamReader(fileName))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
}
else
{
Console.WriteLine("Waiting for new file...");
}
File.Delete(fileName);
Thread.Sleep(5000);
}
}
}
既然我是新来的,我只是想确定一下。我不知道当涉及到系统的每个部分协同工作时,什么是最好的。至少我现在有两种工作方式D如果可以,请使用数据库。每隔几秒钟检查一次文件迟早会导致文件锁定。例如,如果您试图在streamreader读取文件时更新该文件。使用Visual Studio 2012,您可以有一个简单的本地数据库,其中包含您的数据,并且每两秒ping一次,您还可以有一个LastModified date列,您也可以检查它。这就是数据库以及应用程序如何与数据库交互的目的。是的,我一直在思考这个问题。但是,如果web应用程序将xy坐标保存为临时文件,然后在我的程序读取并删除以前的文本文件时将其保存为文本文件,该怎么办?哦,真不错!我还没走到那一步,但是这个建议是非常需要的。我只是试着做一些简单的事情,然后手动去做,看看它最终是如何工作的。非常感谢你的建议!:)再说一次,这种读写是构建数据库的目的,写并发和高速读取是现成的。你需要一个持久层,数据库是世界上最健壮、使用最简单的持久层,为什么要重新发明轮子呢。没错,我肯定要使用数据库:)是的,我想是时候多看看数据库、套接字等等了。。。