PDA

View Full Version : انتقال چندین فایل به چندین پوشه در سی شارپ



abbas3zaar
پنج شنبه 03 فروردین 1396, 17:10 عصر
سلام.

در عکس زیر با دکمه انتخاب پوشه فایل های موجود در پوشه رو در Listbox1 نمایش میدم:

http://uupload.ir/files/882x_0111.jpg

http://uupload.ir/files/ip9t_0222.jpg




و با زدن دکمه "ایجاد پوشه" به تعداد فایل های داخل Listbox (که 4 فایل هست) و با نام خود فایل ها پوشه ایجاد میشه (مثل عکس زیر)

http://uupload.ir/files/2myp_0333.jpg



حالا فقط مونده یه کار !

میخوام با زدن دکمه "انتقال فایل ها" فایل ها به پوشه های ایجاد شده منتقل بشن. (هر فایل به پوشه هم نام خودش منتقل بشه)

اگه میشه در قسمت btnMove_Click کد مربوطه رو بنویسید. مرسی


این کل سورس منه:





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;


namespace Tamrin001
{
public partial class MFC1 : Form
{
public MFC1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{

}


private void btnMove_Click(object sender, EventArgs e)
{


}


private void btnStart_Click(object sender, EventArgs e)
{
string text = "";
foreach (var item in ListBox1.Items)
{
text = Path.GetFileNameWithoutExtension(item.ToString());
string activeDir = txtDirectoryPath.Text;
string newPath = System.IO.Path.Combine(activeDir, text);
System.IO.Directory.CreateDirectory(newPath);


}
}


private void btnSelectFolder_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPa th);
LabelShowCount.Text = files.Length.ToString();
txtDirectoryPath.Text = folderBrowserDialog1.SelectedPath;
string folderName = folderBrowserDialog1.SelectedPath;
foreach (string f in Directory.GetFiles(folderName, "*.*", SearchOption.AllDirectories))
ListBox1.Items.Add(Path.GetFileName(f));
}
}
}
}

shahryari
پنج شنبه 03 فروردین 1396, 19:37 عصر
سلام
یه راه ساده اش اینه که اسم فایل بدذون پسوند بگیری در IO.Path و اسم پوشه تارگتت قرار بدی
مسئله ای که میمونه ویندوز به حروف بزرگ و کوچک حساسه که باید مدیریتش کنی

abbas3zaar
پنج شنبه 03 فروردین 1396, 19:45 عصر
سلام
یه راه ساده اش اینه که اسم فایل بدذون پسوند بگیری در IO.Path و اسم پوشه تارگتت قرار بدی
مسئله ای که میمونه ویندوز به حروف بزرگ و کوچک حساسه که باید مدیریتش کنی


کدش رو میشه بزارید؟

shahryari
پنج شنبه 03 فروردین 1396, 19:48 عصر
کدش رو میشه بزارید؟

یه چیزی تو این مایه ها میشه
string filePath = @"C:\\test\Ali.txt";
string targetFolder = @"D:\\" + System.IO .Path.GetFileNameWithoutExtension (filePath) + @"\" ; // D:\\Ali\
System.IO.File.Copy(filePath, targetFolder + System.IO .Path.GetFileName(filePath));

danialafshari
پنج شنبه 03 فروردین 1396, 20:37 عصر
سلام
شما میتونی همون وقتی که پوشه داره ساخته میشه کپی هم انجام بدی
کد btnStart رو به این شکل تغییر بده:

private void btnStart_Click(object sender, EventArgs e)
{
string text = "";
foreach (var item in ListBox1.Items)
{
text = Path.GetFileNameWithoutExtension(item.ToString());
string activeDir = txtDirectoryPath.Text;
string newPath = System.IO.Path.Combine(activeDir, text);
System.IO.Directory.CreateDirectory(newPath);




string Source = String.Format(@"{0}\{1}.txt", activeDir, text);
string Target = String.Format(@"{0}\{1}.txt", newPath, text);
//File.Copy(Source, Target);
File.Move(Source, Target);


}
}

موفق باشی

abbas3zaar
پنج شنبه 03 فروردین 1396, 22:01 عصر
سلام
شما میتونی همون وقتی که پوشه داره ساخته میشه کپی هم انجام بدی
کد btnStart رو به این شکل تغییر بده:

private void btnStart_Click(object sender, EventArgs e)
{
string text = "";
foreach (var item in ListBox1.Items)
{
text = Path.GetFileNameWithoutExtension(item.ToString());
string activeDir = txtDirectoryPath.Text;
string newPath = System.IO.Path.Combine(activeDir, text);
System.IO.Directory.CreateDirectory(newPath);




string Source = String.Format(@"{0}\{1}.txt", activeDir, text);
string Target = String.Format(@"{0}\{1}.txt", newPath, text);
//File.Copy(Source, Target);
File.Move(Source, Target);


}
}

موفق باشی


خیلی ممنونم. فقط میشه برای تمامی پسوند فایل ها کار کنه؟ چیکار کنیم که فقط TXTرو انتقال نده و برای همه نوع پسوندی کار کنه؟

abbas3zaar
پنج شنبه 03 فروردین 1396, 23:33 عصر
آقای افشاری برای همه نوع پسوند فایل چیکار باید کرد؟ اینجا فقط txt رو انجام میده

danialafshari
جمعه 04 فروردین 1396, 00:39 صبح
آقای افشاری برای همه نوع پسوند فایل چیکار باید کرد؟ اینجا فقط txt رو انجام میده
باید با پسوند لیست کنی و پسوندشو استخراج و جایگیزین .txt در کد کنی