各位大神們,不好意思,小弟又來求助了。
有關以下程式碼:
DirectoryInfo di = new DirectoryInfo(@"C:\Users\gunji\Desktop\data\");
foreach (var fi in di.GetFiles("*.xml"))
{
Regex regex = new Regex(@"SMRY911");
Match m = regex.Match(fi.ToString());
Console.WriteLine(m.Success);
if (m.Success == true)
{
Console.WriteLine("Send To Server : OK");
string strResult = fi.Name;
string[] strArray = strResult.Split('_', '.');
formData.Append(new FieldItem("USER", strArray[0]));
formData.Append(new FieldItem("SHOP", strArray[1]));
formData.Append(new FieldItem("TERM", strArray[2]));
formData.Append(new FieldItem("FILETYPE", strArray[3]));
formData.Append(new FieldItem("SALES_DATE", strArray[4]));
formData.Append(new FieldItem("CLOSE_COUNTER", strArray[5]));
formData.Append(new FieldItem("BATCHID", strArray[6]));
formData.Append(new FileItem("FILE",Path.GetFileName(fi.ToString()), di + fi.ToString()));
}
else if (m.Success == false)
{
Console.WriteLine("Send To Server : NO FILE");
break;
}
想實現內容:
找尋目標資料夾檔案中的檔名關鍵字後,帶出完整檔名並開始切割檔名丟至下方表單內。
例:
在C:\Users\gunji\Desktop\data\ 下有四個檔案
第一回:
1319_00_SMRY901_20180313.XML
1319_00_SMRY911_20180313.XML
1319_00_SMRY921_20180313.XML
1319_00_SMRY931_20180313.XML
關鍵字內容:SMRY901
找出檔案顯示完整路徑名稱(含附檔名),並將檔名(1319_00_SMRY901_20180313(不含附檔名))切割。
丟至formData.Append(new FieldItem("USER", strArray[0]));裡面。
若有找到檔案回應"Have File",若無"NO File" 。
顯示成果為
formData.Append(new FieldItem("USER",1319 ));
formData.Append(new FieldItem("SHOP", 00));
formData.Append(new FieldItem("TERM", SMRY901));
formData.Append(new FieldItem("FILETYPE", 20180313));
依此類推。
請問各路大神可以指點一下方向嗎,這裡小弟試過很多方法,雖然上面程式可行,但foreach好像是跟FOR迴圈是一樣的東西所以IF判斷式好像很有問題。
有想過直接完成後加break;跳出,但總覺得小弟寫的檔案分割,帶入值的程式不是很理想。是否有方式可以更加便捷的方式呢?
using System;
using System.IO;
namespace FileSearchAndParse
{
class Program
{
static void Main(string[] args)
{
// 定義資料夾路徑
string path = @"C:\Users\gunji\Desktop\data\";
// 定義關鍵字
string searchKeyword = "SMRY901";
// 定義檔案名稱變數,並初始化為空字串
string fileName = string.Empty;
// 定義字串陣列,大小為4
string[] strArray = new string[4];
// 遍歷資料夾中的所有檔案
foreach (string file in Directory.GetFiles(path))
{
// 取得檔案名稱(不含附檔名)
fileName = Path.GetFileNameWithoutExtension(file);
// 判斷檔案名稱是否包含關鍵字
if (fileName.Contains(searchKeyword))
{
// 輸出找到的檔案的完整路徑
Console.WriteLine("有檔案:" + file);
// 將檔案名稱以 "_" 符號分割成字串陣列
strArray = fileName.Split('_');
// 輸出表單內容,將分割後的字串陣列元素帶入表單內容中
Console.WriteLine("formData.Append(new FieldItem(\"USER\", " + strArray[0] + "));");
Console.WriteLine("formData.Append(new FieldItem(\"SHOP\", " + strArray[1] + "));");
Console.WriteLine("formData.Append(new FieldItem(\"TERM\", " + strArray[2].Replace(searchKeyword, "") + "));");
Console.WriteLine("formData.Append(new FieldItem(\"FILETYPE\", " + strArray[3] + "));");
// 離開迴圈
break;
}
}
// 若沒有找到檔案,則輸出 "NO File"
if (string.IsNullOrEmpty(fileName))
{
Console.WriteLine("NO File");
}
// 等待使用者按下任意鍵
Console.ReadKey();
}
}
}