求助!资源管理器如何实现复制粘贴? file的move方法和copy方法好像差不多,但是如何能实现复制一个文件,然后粘贴到别的磁盘下呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); } } } 好吧lz 你知道计算器的 临时存储机制吧计算器记录的再上一个数据以后 是不再回头的这就是一样的 。只是 copy的不是文件。只是一个 路径 我是学生,,现在刚学到OOP,才知道file类,老师让我们自学写一个资源管理器不懂存储机制 string folderName = srcdir.Substring(srcdir.LastIndexOf("\\")+1);string desfolderdir = desdir +"\\"+ folderName;子夜大哥,这两句代码是获取我当前选中的文件的路径嘛? 用 SHFileOperation 这个apiusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Learn { public partial class Form1 : Form { [DllImport("shell32.dll", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool SHFileOperation([In, Out] SHFILEOPSTRUCT str); private const int FO_MOVE = 0x1; private const int FO_COPY = 0x2; private const int FO_DELETE = 0x3; private const ushort FOF_NOCONFIRMATION = 0x10; private const ushort FOF_ALLOWUNDO = 0x40; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public class SHFILEOPSTRUCT { public IntPtr hwnd; /// <summary> /// 设置操作方式,移动:FO_MOVE,复制:FO_COPY,删除:FO_DELETE /// </summary> public UInt32 wFunc; /// <summary> /// 源文件路径 /// </summary> public string pFrom; /// <summary> /// 目标文件路径 /// </summary> public string pTo; /// <summary> /// 允许恢复 /// </summary> public UInt16 fFlags; /// <summary> /// 监测有无中止 /// </summary> public Int32 fAnyOperationsAborted; public IntPtr hNameMappings; /// <summary> /// 设置标题 /// </summary> public string lpszProgressTitle; } public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(CopyFile().ToString()); } private bool CopyFile() { SHFILEOPSTRUCT pm = new SHFILEOPSTRUCT(); pm.wFunc = FO_COPY; pm.pFrom = @"F:\Office2003sp2_xunchi.exe"; pm.pTo = @"c:\a.exe"; pm.fFlags = FOF_ALLOWUNDO;//允许恢复 pm.lpszProgressTitle = "哈哈"; return !SHFileOperation(pm); } } }http://www.csharpwin.com/csharpspace/9066r2724.shtml C#中在使用Spilt()函数时应该包含什么using集? MS Chart问题 菜鸟问题 OdbcCommand 数据不能入库 [推荐]超强电子书籍下载 C#如何将一个数学表达式中变量和操作符分析出来? DataGrid分页问题!!! oledbconnection问题! 如何判断一个string类型中的后面几位是数字?想了我一天,郁闷! 用树从数据库中生成公司组织结构的困惑 C#的checkedlistbox的控件如何绑定? 用c#写个winform程序,程序用HttpWebRequest调用一网址,返回中页面html代码,但发现html代码中js代码没有执行
{
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);
}
}
}
lz 你知道计算器的 临时存储机制吧计算器记录的再上一个数据以后 是不再回头的
这就是一样的 。
只是 copy的不是文件。只是一个 路径
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Learn
{
public partial class Form1 : Form
{
[DllImport("shell32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern bool SHFileOperation([In, Out] SHFILEOPSTRUCT str);
private const int FO_MOVE = 0x1;
private const int FO_COPY = 0x2;
private const int FO_DELETE = 0x3;
private const ushort FOF_NOCONFIRMATION = 0x10;
private const ushort FOF_ALLOWUNDO = 0x40;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class SHFILEOPSTRUCT
{
public IntPtr hwnd;
/// <summary>
/// 设置操作方式,移动:FO_MOVE,复制:FO_COPY,删除:FO_DELETE
/// </summary>
public UInt32 wFunc;
/// <summary>
/// 源文件路径
/// </summary>
public string pFrom;
/// <summary>
/// 目标文件路径
/// </summary>
public string pTo;
/// <summary>
/// 允许恢复
/// </summary>
public UInt16 fFlags;
/// <summary>
/// 监测有无中止
/// </summary>
public Int32 fAnyOperationsAborted;
public IntPtr hNameMappings;
/// <summary>
/// 设置标题
/// </summary>
public string lpszProgressTitle;
}
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(CopyFile().ToString());
}
private bool CopyFile()
{
SHFILEOPSTRUCT pm = new SHFILEOPSTRUCT();
pm.wFunc = FO_COPY;
pm.pFrom = @"F:\Office2003sp2_xunchi.exe";
pm.pTo = @"c:\a.exe";
pm.fFlags = FOF_ALLOWUNDO;//允许恢复
pm.lpszProgressTitle = "哈哈";
return !SHFileOperation(pm); }
}
}
http://www.csharpwin.com/csharpspace/9066r2724.shtml