WinForm(C#)复制文件夹(文件)问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm(C#)复制文件夹(文件)问题相关的知识,希望对你有一定的参考价值。
1. 我想将 C:\abc文件夹复制到 D:\ 下面怎么办呀?麻烦高手给下代码;
2. 将C:\aa.txt 文件复制到 D:\ 下面怎么办? 这两种情况能用一个方法来解决吗? 麻烦高手告诉下,最好是代码?
成功执行绝对加分....
/// <summary>
/// 将整个文件夹复制到目标文件夹中。
/// </summary>
/// <param name="srcPath">源文件夹</param>
/// <param name="aimPath">目标文件夹</param>
/// <returns></returns>
public bool CopyDir(string srcPath, string aimPath )
try
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if (!Directory.Exists(aimPath))
Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
string[] fileList = Directory.GetFileSystemEntries(srcPath);
// 遍历所有的文件和目录
foreach (string file in fileList)
// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if (Directory.Exists(file))
CopyDir(file, aimPath + Path.GetFileName(file));
// 否则直接Copy文件
else
File.Copy(file, aimPath + Path.GetFileName(file), true);
return true;
catch
return false;
参考技术A 文件复制:File.Copy(fnsrc, fndes, true);第三个参数表示是否替代同名文件;
文件夹复制可以遍历文件夹进行复制。
刚出炉,热的。。。。建立一个form,一个按钮下实现的,测试通过:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace CopyDirectory
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
CopyDirectory("c:\\downloads","d:\\");
/// <summary>
/// 拷贝文件夹
///By Wang Hw www.pegete.com.cn
/// </summary>
/// <param name="srcdir"></param>
/// <param name="desdir"></param>
private void CopyDirectory(string srcdir, string desdir)
string folderName = srcdir.Substring(srcdir.LastIndexOf("\\")+1);
string desfolderdir = desdir +"\\"+ folderName;
if (desdir.LastIndexOf("\\") == (desdir.Length - 1))
desfolderdir = desdir + folderName;
string[] filenames = Directory.GetFileSystemEntries(srcdir);
foreach (string file in filenames)// 遍历所有的文件和目录
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
if (!Directory.Exists(currentdir))
Directory.CreateDirectory(currentdir);
CopyDirectory(file, desfolderdir);
else // 否则直接copy文件
string srcfileName = file.Substring(file.LastIndexOf("\\")+1);
srcfileName = desfolderdir + "\\" + srcfileName;
if (!Directory.Exists(desfolderdir))
Directory.CreateDirectory(desfolderdir);
File.Copy(file, srcfileName);
//foreach
//function end
本回答被提问者采纳 参考技术B 你可能要的功能都替你想到了~~
18.复制文件
//using
System.IO;
File.Copy(%%1,%%2);
13.复制文件夹
/*
using
System.IO;
using
System.Collections;
*/
string
path
=
(%%2.LastIndexOf("\\")
==
%%2.Length
-
1)
?
%%2
:
%%2+"\\";
string
parent
=
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path
+
Path.GetFileName(%%1));
%%1
=
(%%1.LastIndexOf("\\")
==
%%1.Length
-
1)
?
%%1
:
%%1
+
"\\";
DirectoryInfo
dir
=
new
DirectoryInfo(%%1);
FileSystemInfo[]
fileArr
=
dir.GetFileSystemInfos();
Queue
Folders
=
new
Queue
(dir.GetFileSystemInfos());
while
(Folders.Count>0)
FileSystemInfo
tmp
=
Folders.Dequeue();
FileInfo
f
=
tmp
as
FileInfo;
if
(f
==
null)
DirectoryInfo
d
=
tmp
as
DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\")
==
parent.Length
-
1)
?
parent
:
parent
+
"\\",
path));
foreach
(FileSystemInfo
fi
in
d.GetFileSystemInfos())
Folders.Enqueue(fi);
else
f.CopyTo(f.FullName.Replace(parent,
path));
14.复制目录下所有的文件夹到另一个文件夹下
/*
using
System.IO;
using
System.Collections;
*/
DirectoryInfo
d
=
new
DirectoryInfo(%%1);
foreach
(DirectoryInfo
dirs
in
d.GetDirectories())
Queue
al
=
new
Queue
(dirs.GetFileSystemInfos());
while
(al.Count
>
0)
FileSystemInfo
temp
=
al.Dequeue();
FileInfo
file
=
temp
as
FileInfo;
if
(file
==
null)
DirectoryInfo
directory
=
temp
as
DirectoryInfo;
Directory.CreateDirectory(path
+
directory.Name);
foreach
(FileSystemInfo
fsi
in
directory.GetFileSystemInfos())
al.Enqueue(fsi);
else
File.Copy(file.FullName,
path
+
file.Name);
参考技术C 你可能要的功能都替你想到了~~
18.复制文件
//using System.IO;
File.Copy(%%1,%%2);
13.复制文件夹
/*
using System.IO;
using System.Collections;
*/
string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2+"\\";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
%%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\";
DirectoryInfo dir = new DirectoryInfo(%%1);
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count>0)
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f == null)
DirectoryInfo d = tmp as DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path));
foreach (FileSystemInfo fi in d.GetFileSystemInfos())
Folders.Enqueue(fi);
else
f.CopyTo(f.FullName.Replace(parent, path));
14.复制目录下所有的文件夹到另一个文件夹下
/*
using System.IO;
using System.Collections;
*/
DirectoryInfo d = new DirectoryInfo(%%1);
foreach (DirectoryInfo dirs in d.GetDirectories())
Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos());
while (al.Count > 0)
FileSystemInfo temp = al.Dequeue();
FileInfo file = temp as FileInfo;
if (file == null)
DirectoryInfo directory = temp as DirectoryInfo;
Directory.CreateDirectory(path + directory.Name);
foreach (FileSystemInfo fsi in directory.GetFileSystemInfos())
al.Enqueue(fsi);
else
File.Copy(file.FullName, path + file.Name);
参考技术D File.Copy("C:\aa.txt","d:\aa.txt");
c# winform 如何实现选择另一台电脑上目录下的文件??
本人问题已解决,谢谢。 直接用openFileDialog1控件就可以解决
winform里边有个openFileDialog控件,这个控件可以获得选中文件的路径,先拖上去一个控件然后在按钮的点击事件里边写this.openFileDialog1.ShowDialog();//打开openFileDialog窗口
this.txtFilePath.Text = this.openFileDialog1.FileName;//获得所选择的路径,在一个文本框中显示
把这个路径找个xml啥的储存起来,每次调用路径得到图片. 参考技术A 看你是用HUB,交换机,还是路由器了,HUB和交换机的话就要设置一台电脑为主机来带,路由器的话只要你设置了自动拔号(没有制定规则),直接接上就行,制定了规则的话你就要在规则那里把这台机的IP加在里面才行 参考技术B 2个方案,假设A电脑获取B电脑的文件
1、在B运行一个程序,这个程序接收A发出的目录请求,获取目录下的文件返回给A,A显示出来
2、B开共享目录,A通过共享访问(也可以在A上创建磁盘映射) 参考技术C 在其他电脑共享目录,然后做个路径影射,或者在网络邻居里选目标电脑也可以呀?
以上是关于WinForm(C#)复制文件夹(文件)问题的主要内容,如果未能解决你的问题,请参考以下文章
C# 自己写的Winform程序批量导入Excel文件到Oracle数据库的过程中,程序运行会很慢!而且Winform窗体会卡
C# ,winform,如何清空或者删除一个文本文档(.txt 文件),路径已知