[英]Read file based on pre-generated file name list?
如果我知道在我的D:\\驱动器下将生成100个文件,并且我知道它们的名称将是001.tif,002.tif,...,100.tif,我将如何继续读取它们直到我读取了全部100个文件? 文件将如下所示:D:/001.tif D:/002.tif ... D:/100.tif
我认为FileWatcherSystem或类似的东西不是一个好选择,因为在这种情况下我不必担心文件事件,因为这些文件肯定会在此生成。 这只是时间问题(很快)。 因此,我想我将需要无限期地读取硬盘驱动器(目标文件夹),直到读取所有文件为止。 任何人有任何意见我应该怎么做? 非常感谢。
我基本上使用while(true)循环来监视文件夹; 文件准备好后,我将对其进行读取和处理。 完成此过程,直到处理完所有文件为止。 这是代码:
public void ReadIndefinitely(string tiffFileFolder, List<string> channelName, int signalLength)
{
string tiffFileName;
int nActiveStats = _signalDisplay.NActiveStatsOneChannel;
int nActiveChannels = _signalDisplay.NActiveChannel;
double signal;
double DeltaT;
bool keepReading = true;
int channelIndex;
int statIndex;
int signalIndex = 0;
while (signalIndex < signalLength)
{
for (int i = 0; i < nActiveChannels; i++)
{
tiffFileName = tiffFileFolder + channelName[i] + "_0001_0001_0001_" + (signalIndex + 1).ToString("0000") + ".tif";
channelIndex = (int)Enum.Parse(typeof(ChannelList), channelName[i]);
keepReading = true;
if(keepReading)
{
if (File.Exists(tiffFileName))
{
if (!IsFileLocked(tiffFileName))
{
for (int j = 0; j < nActiveStats; j++)
{
statIndex = _statsEnableEnumIndex[j];
DeltaT = ExtractTiffDeltaT(tiffFileName, "DeltaT=", 1);
signal = _signalManager.GetSignal(statIndex, tiffFileName);
UpdateSignal(channelIndex, j, signalIndex, DeltaT, signal);
}
keepReading = false;
signalIndex++;
}
else
{
System.Threading.Thread.Sleep(30);
}
}
}
// if (signalIndex % 5 == 0)
_signalDisplay.SetData(_XList, _YList, true);
}
}
}
我必须警告您,此操作占用了我90%的CPU。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.