#c#
#c#
Вопрос:
я могу прочитать файлы папки с помощью BETALIB Reader, но это слишком сложно для чтения, указывая путь по очереди в folderbrowserdialog я могу прочитать папку, но в этой папке много папок и файлов, которые я хочу прочитать во вложенных папках.
для каждого примера:- E:EXEttdttd1ttd2bsemf1.dat E:EXEttdttd1ttd2MCDEXf1.dat
я хочу прочитать файлы, указав путь в folderbrowserdialog НАПРИМЕР:E:EXE
если я выберу путь E:EXE он должен прочитать все вложенные папки и файлы, содержащиеся в нем.
кто-нибудь может сказать мне, что я должен изменить в коде
private void btnSourceBOMCX_Click(object sender, EventArgs e)
{
fbdSourceBOMCX.Description = "Please select BOMCX source folder";
fbdSourceBOMCX.RootFolder = Environment.SpecialFolder.Desktop;
if ((fbdSourceBOMCX.ShowDialog() != DialogResult.Cancel) || (fbdSourceBOMCX.SelectedPath != ""))
{
sourceBOMCX = fbdSourceBOMCX.SelectedPath;
if (File.Exists(sourceBOMCX "\Master"))
{
txtSourceBOMCX.Text = fbdSourceBOMCX.SelectedPath;
Interaction.SaveSetting ((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.Title , "RealTime Converter", "sourceBOMCX", fbdSourceBOMCX.SelectedPath);
}
else
{
}
}
}
частная пустота bgManual_DoWork (отправитель объекта, DoWorkEventArgs e)
{
try
{
int DT = int.Parse(txtSelectedDate.Text);
BETALIB.BLReader Reader = new BETALIB.BLReader();
BETALIB.BLReader Reader1 = new BETALIB.BLReader();
Reader.OpenDirectory(txtSourceBOBOMCX.Text);
Reader.ReadMaster();
string path = txtDestinationBOBOMCX.Text "\XYZ-" 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;
int xyz = lbselectedBOBOMCX.Items.Count - 1;
while (abc <= xyz)
{
if (SecName == (string)lbselectedBOBOMCX.Items[abc])
{
Reader.OpenSecurityByName(Reader.sMaSecName);
Reader.SeekToEnd();
Reader.Seek(-1);
Reader.ReadDay();
float O = Reader.dSeOpen;
float H = Reader.dSeHigh;
float L = Reader.dSeLow;
float C = Reader.dSeClose;
double V = Reader.dSeVolume;
double OI = Reader.dSeOpenInterest;
string T = Reader.iSeTime.ToString();
string D = Reader.iSeDate.ToString();
label9.Text = SecName "/";
if (int.Parse(D) == DT)
{
string a = string.Concat(SecName, ",", Symbol, ",", D, ",", T, ",", O, ",", H, ",", L, ",", C, ",", V, ",", OI);
if (SecName != "" amp;amp; V != 0)
{
Strwriter.WriteLine(a);
}
}
}
abc ;
}
Reader.ReadMaster();
}
Reader.CloseDirectory();
Strwriter.Close();
Strwriter.Dispose();
}
catch
{
Reader.CloseDirectory();
Strwriter.Close();
Strwriter.Dispose();
}
}
catch
{
}
Пожалуйста, помогите мне
Заранее спасибо
}
Комментарии:
1. Господи! Начните исправлять свой вопрос.
2. Вы пробовали реализовать рекурсию? 🙂
3. средства реализации рекурсии?
Ответ №1:
вы можете использовать System.Библиотека классов ввода-вывода DirectoryInfo и FileInfo class, и логика выглядит следующим образом
1) Создайте две функции для обработки каталога и одну для обработки файла 2) В каком каталоге функция чтения считывает, проверяет, является ли элемент файлом или каталогом 3) Если элемент является каталогом, он рекурсивно вызывает сам себя 4) Если элемент является файлом, он отправляет его в метод file process для обработки
public void fnProcessDirectory(string strPath)
{
if (File.Exists(strPath))
{
fnProcessFile(strPath);
}
else if (Directory.Exists(strPath))
{
string[] fileEntries = Directory.GetFiles(strPath);
string[] subdirEntries = Directory.GetDirectories(strPath);
foreach (string fileName in fileEntries)
{
fnProcessFile(fileName);
}
foreach (string dirName in subdirEntries)
{
fnProcessDirectory(dirName);
}
}
}
public void fnProcessFile(string strPath)
{
//ProcessFile
}
Комментарии:
1. возникает ошибка, при которой эта строка чтения высвечивается. Откройте директорию (txtSourceBOBOMCX.Text); и ошибка заключается в том, что каталог не содержит никаких файлов betastock
2. можете ли вы добавить этот код в мой код, я новичок в C #, пожалуйста, добавьте, возможно, я делаю ошибку, поэтому я получаю ошибку, пожалуйста, можете ли вы добавить для меня
3. нет необходимости использовать open directory, вы можете использовать getdirectories и getfiles для доступа к содержимому папки, а затем выполнить итерацию с использованием foreach для обработки.
4. как использовать несколько путей в коде, например: string path = «C:\work «; string path2 = «C:\Business «;
5. как использовать несколько путей в коде. в папке много вложенных файлов. я хочу загрузить содержащиеся в нем вложенные файлы несколькими или тройными строками, например: — work — это основная папка, а Business, job — это вложенные файлы. Я хочу загрузить все вложенные файлы, используя string path = «C:\WorkBusiness «; string path2 = «C:\Workjob «; как я могу загружать файлы с помощью нескольких строк