PDA

View Full Version : انتخاب فایل های درون زیر پوشه یک پوشه



elderado
شنبه 07 دی 1392, 19:19 عصر
با سلام و خسته نباشید
دوستان من یک پوشه دارم که داخل اون سه تا پوشه دیگه هست
چطور میشه با openfiledialog یا FolderBrowsingDialog همه فایل ها رو یکجا انتخاب کرد؟
ممنونم

abdullah20
شنبه 07 دی 1392, 19:34 عصر
دقیق متوجه نشدم
1-شما یک پوشه دارید که داخل ان سه تا پوشه هست که داخل این سه پوشه فایل وجود داره
حالا میخواید با انتخاب پوشه ریشه کل فایل های موجود در سه پوشه را لود کنید درسته؟
2-اایا ادرس فایلها را میخواید مثلا در یک لیست باکس نمایش بدید؟

farhad.k.t
شنبه 07 دی 1392, 19:41 عصر
میتوانید خاصیت Multiselect openfiledialog را فعال کنید...

شاید کد زیر کمکتان کند:
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
ListBox lst = new ListBox();
lst.Size = this.Size;
Controls.Add(lst);
lst.Items.AddRange(Directory.GetFiles(fbd.Selected Path));
}

elderado
یک شنبه 08 دی 1392, 11:41 صبح
دقیق متوجه نشدم
1-شما یک پوشه دارید که داخل ان سه تا پوشه هست که داخل این سه پوشه فایل وجود داره
حالا میخواید با انتخاب پوشه ریشه کل فایل های موجود در سه پوشه را لود کنید درسته؟
2-اایا ادرس فایلها را میخواید مثلا در یک لیست باکس نمایش بدید؟

بله درسته
میخوامبا انتخاب پوشه اول (که سه تا پوشه ی دیگه درون اون قرار داره) همه ی فایل ها انتخاب بشن.
میخوام این فایل ها رو به پایگاه داده اینزرت کنم
در حال حاضر همه ی کد ها رو نوشتم و نرم افزار برای تک تک پوشه ها کار میکنه(یعنی اگه یکی یکی پوشه ها رو انتخاب کنم فایل ها اینزرت میشه)
اما میخوام با انتخاب یک پوشه ، تمام فایل های اون پوشه و فایل های تمام زیر پوشه هاش رو یکجا اینزرت کنم
امیدوارم الان منظورمو فهمیده باشید
الان کد به این صورت هست:

try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;

ofd.ShowDialog();
int cc = 0;
string pppp = Path.GetDirectoryName(ofd.FileName);

foreach (var file in ofd.FileNames)
{
byte[] jalal = null;
FileInfo fi = new FileInfo(file.ToString());
FileStream fs = new FileStream(file.ToString(), FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long totalbytes = new FileInfo(file.ToString()).Length;
jalal = br.ReadBytes((Int32)totalbytes);
fs.Close();
fs.Dispose();
br.Close();
byte[] bytes = File.ReadAllBytes(file.ToString());
SqlParameter fileP = new SqlParameter("@file", SqlDbType.VarBinary);
fileP.Value = bytes;
SqlParameter name = new SqlParameter("@pname", SqlDbType.NVarChar);
name.Value = fi.Name;
SqlCommand myCommand = new SqlCommand();
myCommand.Parameters.Add(fileP);
myCommand.Parameters.Add(name);
SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=pdf;Integrated Security=True");
conn.Open();
myCommand.Connection = conn;
myCommand.CommandText = "spPdfInsert";
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.ExecuteNonQuery();
conn.Close();
cc++;
}
MessageBox.Show("تعداد "+cc+" فایل اضافه شد");

}
catch { }

متشکرم

abdullah20
یک شنبه 08 دی 1392, 14:24 عصر
بفرما دوست عزیز با این کد ادرس همه ی فایل ها را میتونید به دست بیارید

private void ListAllFiles(string path)
{
DirectoryInfo dr = new DirectoryInfo(path);
var directories = dr.GetDirectories();
foreach (var directory in directories)
{
ListAllFiles(directory.FullName);
DirectoryInfo dir = new DirectoryInfo(directory.FullName);
foreach (FileInfo file in dir.GetFiles())
listBox1.Items.Add(file.FullName);
}
}
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog openfile = new FolderBrowserDialog();
if(openfile.ShowDialog ()==DialogResult.OK )
ListAllFiles(openfile.SelectedPath );
}

elderado
دوشنبه 09 دی 1392, 16:37 عصر
با تشکر از زحمت شما دوست عزیز
باید بگم این کد فایل های درون پوشه ی روت رو بر نمیگردونه و فقط فایل های درون زیر پوشه ها رو توی لیست باکس اضافه میکنه

khokhan
دوشنبه 09 دی 1392, 17:23 عصر
با تشکر از زحمت شما دوست عزیز
باید بگم این کد فایل های درون پوشه ی روت رو بر نمیگردونه و فقط فایل های درون زیر پوشه ها رو توی لیست باکس اضافه میکنه
.................................................. .................:لبخند:

elderado
دوشنبه 09 دی 1392, 17:32 عصر
دوست عزیز از توجه شما متشکرم
این پروژه با کدوم ورژن ویژوال نوشته شده؟ مال من 2008 هست.