如何解决如何从文件夹和子文件夹中提取数据文件
| 我在读取文件和子文件夹时遇到问题。对于给定的固定源路径E:\\\\Folder\\\\test\\\\test2
,我的代码可以正常读取。
测试中有很多文件夹,例如test2,test3,test4等。我想提取主文件夹test
中的数据文件。
例如,我想提取测试中的文件,所以我想读取测试中包含的所有文件,而不是为test3,test4等编写代码。我想提取所有文件并将其作为相同的源结构写入另一个驱动器。
例如,如果源结构类似于“ 0”,则目标结构应类似于“ 3”
有什么办法吗?
这是我的代码,
private void dateTimePicker1_ValueChanged(object sender,EventArgs e)
{
DateTime dt = dateTimePicker1.Value;
txtSelectedDate.Text = dt.ToString(\"yyyyMMdd\");
selectedDate = txtSelectedDate.Text;
}
private void button2_Click(object sender,EventArgs e)
{
DateTime stdate = Datetimepicker1.value;
while (stdate <= DateTime.Now)
{
txtSelectedDate.Text = stdate.ToString(\"yyyyMMdd\");
selectedDate = txtSelectedDate.Text;
string DayBgSpot = \"E:\\\\Folder\\\\test\\\\test2\";
string DayBgSpotDestination = \"E:\\\\Folder1\";
int DT = int.Parse(txtSelectedDate.Text);
FileReader Reader = new FileReader();
FileReader Reader1 = new FileReader();
Reader.OpenDirectory(DayBgSpot);
Reader.ReadNaster();
string path = DayBgSpotDestination + \"\\\\\" + txtSelectedDate.Text + \".txt\";
StreamWriter Strwriter = new StreamWriter(path);
try
{
while (Reader.iMaRecordsLeft > 0)
{
string SecName = Reader.sMaSecName;
string Symbol = Reader.sMaSecSymbol;
Symbol = prefix + Symbol;
int abc = 0;
Reader.OpenSecurityByName(Reader.sMaSecName);
if (Reader.iSeRecords > 0)
{
while (Reader.iSeRecordsLeft > 0)
{
Reader.ReadDay();
float O = Reader.dSeo;
float H = Reader.dSeh;
float L = Reader.dSel;
float C = Reader.dSec;
double V = Reader.dSeV;
double OI = Reader.dSrest;
string T = Reader.iSeTime.ToString();
string D = Reader.iSeDate.ToString();
if (int.Parse(D) == DT)
{
string a = string.Concat(SecName,\",Symbol,D,T,O,H,L,C,V,OI);
if (SecName != \"\" && V != 0)
{
Strwriter.WriteLine(a);
}
}
}
}
abc++;
Reader.ReadNaster();
}
Reader.CloseDirectory();
Strwriter.Close();
Strwriter.Dispose();
}
catch
{
}
stdate = stdate.AddDays (1); // It will get next date till present
}
}
解决方法
就像是
System.IO.DirectoryInfo baseFolder = new DirectoryInfo(@\"c:\\Folder\\test\\\");
string destinationPath = @\"e:\\Folder\\test\\\";
System.IO.DirectoryInfo[] subDirs = baseFolder.GetDirectories();
foreach (System.IO.DirectoryInfo dirInfo in subDirs)
{
string subFolder = dirInfo.Name;
System.IO.FileInfo[] fileInfos = dirInfo.GetFiles(\"*.txt\");
foreach (System.IO.FileInfo fileInfo in fileInfos)
{
// Do something with the files
string writePath = destinationPath + subFolder + @\"\\\" + fileInfo.Name;
// Write
}
}
, 如果您使用的是.NET 4.0,则这是一行:
var filepaths = Directory.GetFiles(path: @\"C:\\\",searchPattern: \"*pattern*\",searchOption: SearchOption.AllDirectories);
显然,根路径和搜索模式与建议的示例不一致,但是我的意图应该明确。
我希望这有帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。