某一类型多项文件复制与粘贴实例
目的:
找到系统中特定类型的某些文件,随后选中保存于listbox中,选中系统中某个已存在路径,将文件复制到该路径中
实现
页面设置:(一个textbox,三个button,一个listbox,一个openFileDialog,一个saveFileDialog)
1选中文件并保存至listbox
(已拖入openFileDIalog控件),
创建 List Wenjian = new List();用于储存文件地址。对button1的点击事件设置如下内容:
List<string> Wenjian = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
string g = textBox1.Text;//读入后缀名
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "选择文件";
ofd.Multiselect = true;
ofd.RestoreDirectory = true;
ofd.Filter = "所选文件|*." + g + "|所有文件|*.*";
ofd.ShowDialog();
string[] path = ofd.FileNames;
for (int i = 0; i < path.Length; i++)
{
listBox1.Items.Add(Path.GetDirectoryName(path[i])+"\\"+Path.GetFileName(path[i]));
Wenjian.Add(path[i]);
}
}
此段实现运行时于textbox1中输入后缀名(如txt),打开一个openFileDialog栏,选中后将选中的文件的路径文件名打开并保存至listbox中。
2选中保存路径
(已拖入SaveFileDialog控件)
创建string;用于储存路径名。对button2的点击事件设置如下内容:
string lujing = "";
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog s1 = new SaveFileDialog();
s1.Title = "保存文件位置";
s1.Filter = "存储位置(*.)|*.";
s1.FilterIndex = 1;
s1.RestoreDirectory = false;
s1.FileName = "存放于此处";
if (s1.ShowDialog() == DialogResult.OK)
{
string localFilePath = s1.FileName.ToString();
string[] words = localFilePath.Split('\\');
lujing = words[0] + "\\";
for (int a = 1; a < words.Length - 1; a++)
{
lujing = lujing + words[a] + "\\";
}
textBox1.Text = lujing;
}
}
3将listbox中存在的内容复制到button2点击后选中的地址中
创建函数
public void CopyToFile(string sourceName, string folderPath)
{
//例子:
//源文件路径
//string sourceName = @"D:\Source\Test.txt";
//目标路径:项目下的NewTest文件夹,(如果没有就创建该文件夹)
//string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewTest");
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
//当前文件如果不用新的文件名,那么就用原文件文件名
string fileName = Path.GetFileName(sourceName);
//这里可以给文件换个新名字,如下:
//string fileName = string.Format("{0}.{1}", "newFileText", "txt");
//目标整体路径
string targetPath = Path.Combine(folderPath, fileName);
//Copy到新文件下
FileInfo file = new FileInfo(sourceName);
if (file.Exists)
{
//true 为覆盖已存在的同名文件,false 为不覆盖
file.CopyTo(targetPath, true);
}
}
//来自https://blog.csdn.net/qq_38693757/article/details/115730668
对button3的点击事件进行设置如下内容
if (listBox1.Items.Count == 0) ;
else
{
while (listBox1.Items.Count > 0)
{ string source = listBox1.Items[0].ToString();
textBox1.Text = source;
CopyToFile(@source, lujing);
listBox1.Items.Remove(listBox1.Items[0]);
}
}
至此,一个简单的通过后缀名选择文件,随后将其复制到指定文件夹下的程序完成。
使用:
运行后在textbox中输入后缀名(如txt),如需选择全部文件可以输入*
随后点击button1,
浏览到文件选中,确定,
(文件添加到listbox中)
点击button2,
到达某一路径下,点击确定,
textbox中显示路径
点击button3,listbox中存在的文件路径及名称复制并粘贴到textbox中显示的路径中,(以原名保存)。
简单的扩展想法:
1,为listbox添加删除选中某一项的功能
2,通过添加字符串使openfileDialog,SavefileDialog可以打开到上一次关闭位置,现有代码会导致openfiledialog再次打开时为savefiledialog上一次打开位置,可以通过添加两个字符串解决。
3,优化界面。