我正在制作一个程序,它将从绘图应用程序中读取文本文件中的xy坐标。我在想,从绘制线的开始到结束将开始检测坐标集。对于绘制的每一条线,都会有一组新的xy坐标。然后我想制作一个
的程序另外,我想知道最好的事情是
我真的很喜欢编程,如果我得到某种帮助,我会非常感激。我一直在Visual Studio中用C#编程。我很确定我需要使用FileSystemWatcher,我只是不知道如何使用它....
到目前为止,我只做了这个:
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);
}
}
}
答案 0 :(得分:1)
按如下方式初始化观察者:
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);
}
}
替代方法是使用System.Threading.Timer
。
如果文本以增量方式附加到文件,我建议您使用数据库,套接字等而不是文件。
答案 1 :(得分:0)
非常感谢你的快速回答和帮助! :)
在我看到你的答案之前,我正在研究另一种方法。当文本文件存在时,将读取文本文件并将其写入控制台。当它被读取时,它将被删除并等待出现另一个文本文件(另一组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