我的任务是编写一个c#程序,该程序用于执行以下操作:
您输入目标目录。 程序搜索目录是否存在。如果没有,请求新输入。否则继续。
程序获取某种类型的文件(它意味着是.epl文件,但为了解决这个问题,我只是使用.txt文件)并将它们添加到FilePathsA []数组中。 数组列表由FilePathsA。
组成如果列表的计数为0;获取文件。 (在所述文件夹中只有1个类型的文件)。 如果列表的计数是1;获取文件路径字符串,创建文本阅读器实例。阅读文件文本,附加文本,将文本发送到打印机。
关闭文本阅读器实例。 删除刚刚打印的文件。 清除数组列表。
重复获取文件进程,直到找到新文件,打印/删除该文件,重复该循环。这意味着在程序关闭之前保持活跃状态。
获取初始文件正常;然后打印然后从文件夹中删除文件。然而,我的问题是延迟这个循环的递归。 一旦文件被删除,它将不断“搜索”但实际上不会继续。调试似乎表明它根本没有得到新文件。
不确定如何解决此问题,以下是代码摘录: http://pastebin.com/RNn7QqXJ
任何帮助表示赞赏!
答案 0 :(得分:3)
我认为你应该把
string[] filePathsA;
ArrayList filePaths;
在你的循环之外
和
filePathsA = Directory.GetFiles(@dir, "*.txt");
filePaths = new ArrayList(filePathsA);
在do ... while
块的开头。
答案 1 :(得分:3)
你为什么不:
while( !shutdown )
{
foreach( string filename in Directory.GetFiles(@dir, "*.txt")
{
printTheFile( filename );
File.Remove( filename );
Thread.Sleep(3000); //if you need to sleep
}
Thread.Sleep(3000); //if you need to sleep
}
甚至可以更好地设置System.IO.FileSystemWatcher
并处理文件创建。