循环一个目录以处理多个XML文件

本文关键字:处理 XML 文件 一个 循环 | 更新日期: 2023-09-27 18:11:33

我有一个客户端应用程序,它可以根据静态路径定位文件并相应地进行处理:

string filepath = @"C:'Users'NChamber'Desktop'package'1002423A_attachments.xml";
byte[] byteArray = System.IO.File.ReadAllBytes(filepath);
channel.UploadTransaction(filepath, 27, byteArray);

这对于单个文件更新来说很好,但我需要的是扫描整个目录中以"*.xml"结尾的所有文件,并处理它们。

到目前为止,我尝试过这种方法,但收效甚微:

string path = @"C:'Users'NChamber'Desktop'package'";
foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
{
    byte[] byteArray = System.IO.File.ReadAllBytes(path);
    channel.UploadTransaction(path, 27, byteArray);
}

任何建议都将不胜感激。

循环一个目录以处理多个XML文件

看起来您实际上并没有在foreach循环中使用file做任何事情,只是在每次迭代中传递path

foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
{
    byte[] byteArray = System.IO.File.ReadAllBytes(path);
    channel.UploadTransaction(file, 27, byteArray);
}

我怀疑你的意思是:System.IO.File.ReadAllBytes(file);例如:

foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
{
    byte[] byteArray = System.IO.File.ReadAllBytes(file);
    channel.UploadTransaction(file, 27, byteArray);
}

然后:channel.UploadTransaction(file, 27, byteArray);

试试这个:

foreach (string file in Directory.GetFiles(path, "*.xml"))
{
byte[] byteArray = System.IO.File.ReadAllBytes(file);
channel.UploadTransaction(file, 27, byteArray);                        
}

循环中的一个小错误,需要用file而不是path:调用ReadAllBytes

byte[] byteArray = System.IO.File.ReadAllBytes(file);