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使用相对路径读取文件的方法

C# ,winform,如何清空或者删除一个文本文档(.txt 文件),路径已知

C# WinForm TPL 任务调用意外结果-我在这里做错了啥? [复制]

C# Winform 生成安装软件

c# Settings 保存位置