Я создаю приложение Visual C# для скрытых xml-файлов в x12 edi txt-файлах. Я хотел бы удалить все файлы в каталоге xml после того, как я создал их эквиваленты txt. Я попытался добавить метод foreach с file.delete, но не могу заставить его работать. Когда я помещаю его в основной метод, мне говорят, что файл используется. Когда я размещаю его вне основного метода, он не выполняется вообще. Ниже приведен код для моего приложения с файлом.delete в конце, вне основного метода и класса.Как удалить файлы в каталоге после того, как я преобразовал их из XML в Txt с помощью консольного приложения Visual C#?
namespace XMLParse
{
class Class1
{
public static void Main()
{
string[] Files = Directory.GetFiles(@"C:\onlinesales");
foreach (string filename in Files)
{
StringBuilder orderid = new StringBuilder();
StringBuilder ordernumber = new StringBuilder();
StringBuilder name = new StringBuilder();
StringBuilder staddress = new StringBuilder();
StringBuilder city = new StringBuilder();
StringBuilder state = new StringBuilder();
StringBuilder zip = new StringBuilder();
StringBuilder country = new StringBuilder();
StringBuilder email = new StringBuilder();
StringBuilder partnumber = new StringBuilder();
StringBuilder quantity = new StringBuilder();
using (XmlReader reader = XmlReader.Create(new StreamReader(filename)))
{
reader.ReadToFollowing("OrderID");
orderid.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("OrderNumber");
ordernumber.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("Name");
name.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("Line1");
staddress.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("City");
city.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("StateProvinceCode");
state.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("PostalCode");
zip.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("CountryCode");
country.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("Email");
email.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("ProductSKU");
partnumber.Append(reader.ReadElementContentAsString());
reader.ReadToFollowing("Quantity");
quantity.Append(reader.ReadElementContentAsString());
}
using (StreamWriter fileout =
new StreamWriter("W:" + DateTime.Now.ToString("yyyyy-MM-dd_hh-mm-ss-ff") + ".txt", false, Encoding.ASCII))
{
fileout.WriteLine("ISA*00* *00* *ZZ*daisywebstore *12*5016361200 *" + DateTime.Now.ToString("yyMMdd") + "*1559*U*00400*000001649*0*P>~");
fileout.WriteLine("GS*PO*daisywebstore*5016361200*" + DateTime.Now.ToString("yyyyMMdd") + "*" + DateTime.Now.ToString("HHmm") + "*1649*X*004010~");
fileout.WriteLine("ST*850*13~");
fileout.WriteLine("BEG*00*SA*08272226001*" + DateTime.Now.ToString("yyyyMMdd") + "~");
fileout.WriteLine("REF*DP*089~");
fileout.WriteLine("DTM*002*20120104~");
fileout.WriteLine("N1*ST*" + name + "~");
fileout.WriteLine("N3*" + staddress + "~");
fileout.WriteLine("N4*" + city + "*" + state + "*" + zip + "~");
fileout.WriteLine("N1*RE**92*00103653341~");
fileout.WriteLine("PO1*1*6*EA*33.28*TE*IN*985880-542~");
fileout.WriteLine("PID*F*****CO2 BB PISTOL $ 5693~");
fileout.WriteLine("PO4*3*1*EA~");
fileout.WriteLine("CT*1~");
fileout.WriteLine("AMT*1*199.68~");
fileout.WriteLine("SE*16*13~");
}
}
}
}
}
public class Delete
{
private static void Empty()
{
string[] files = Directory.GetFiles(@"C:\onlinesales");
foreach (string filename in files)
File.Delete(filename);
}
}
Вы не вызывая метод из любой точки мира. – keyboardP
'Когда я размещаю его вне основного метода, он вообще не выполняется.' Где вы вызываете метод? –
Я считаю, что я начинаю видеть. Мне нужно вызвать метод Empty в методе Main, правильно? Не приведет ли это к тому, что при использовании метода foreach в методе Main будет получена ошибка «файл используется»? –