winform复制文件到指定目录
执行步骤
- 弹出选择对话框:
var openFileDialog = new OpenFileDialog();- 设置选择内容,如所有图片:
openFileDialog.Filter="图像文件 (*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png)|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png";- 获取选择的路径集合:
openFileDialog.FileNames- 复制文件:
File.Copy(sourcePath,targetPath);//目录重命名见下面代码
1. 打开图片选择对话框
默认为多选,返回选择的文件路径集合,可使用
FirstOrDefault()方法判断是否选择了文件
//打开文件对话框并获取选择的文件
private List<string> OpenImagesDialog(bool isMulti = true)
{
var openFileDialog = new OpenFileDialog();
const string imgExts = "图像文件 (*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png)|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png";
openFileDialog.Filter = imgExts;//可选择的文件格式 (|之前为显示,之后为控制后缀显示)
openFileDialog.Multiselect = isMulti;//多选设置
openFileDialog.RestoreDirectory = true;
openFileDialog.FilterIndex = 1;
var result = new List<string>();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
result.AddRange(openFileDialog.FileNames);
}
return result;
}
2.复制文件到指定目录
将传递的文件复制到指定目录并以Guid重命名,目录不存在则自动创建
使用元组返回对应路径键值对(Item1)及失败路径集合(Item2)
/// <summary>
/// 复制文件到指定目录并重命名
/// </summary>
/// <param name="sourcePaths">要复制的文件路径集合</param>
/// <param name="targetDir">目标目录</param>
/// <returns>Item1:对应路径,Item2:失败文件路径</returns>
public static Tuple<Dictionary<string, string>, List<string>> CopyFileToDir(List<string> sourcePaths, string targetDir)
{
if (!Directory.Exists(targetDir))
{
Directory.CreateDirectory(targetDir);
}
var errorFiles = new List<string>();
var saveDirs = new Dictionary<string, string>();
sourcePaths.ForEach(item =>
{
//路径不存在或者路径已存在则失败
if (!File.Exists(item) || saveDirs.ContainsKey(item))
{
errorFiles.Add(item);
}
else
{
var saveName = Guid.NewGuid() + Path.GetExtension(item);
var savePath = Path.Combine(targetDir, saveName);
File.Copy(item, savePath);
saveDirs.Add(item, savePath);
}
});
var result = new Tuple<Dictionary<string, string>, List<string>>(saveDirs, errorFiles);
return result;
}
调用示例 ( AppendLogMsg 为追加日志方法)
var selectImgs = OpenImagesDialog(true);//打开文件对话框并获取选择的所有文件
var result = FileHelper.CopyFileToDir(selectImgs, txtSaveDir.Text);
//result.Item1 [{源文件路径:目标路径}]
//result.Item2 [失败路径1,失败路径2]
winform复制文件到指定目录的更多相关文章
- visual studio使用dos命令在生成项目时复制文件到指定目录
本人使用软件:vs2015 拷贝“项目1”的 bin目录 下, 项目配置的名称(“Release”,“Debug”)目录下,所有内容到“项目2”输出目录(存在直接覆盖): xcopy $(Soluti ...
- 【Linux】【三】linux 复制文件到指定目录
将 application/file/test/logs/ 下的文件 logs.log , logs.tar 复制到 application/file/test/tools/ 下,并新建文件夹[l ...
- 安卓:从assets目录下复制文件到指定目录
有些时候我们直接将某些资源文件内置到apk中,便于直接使用. 1.首先将文件放置在项目/app/src/main/assets目录中 2.功能代码: public void copyFile(Stri ...
- linux 系统如何复制文件到指定目录
首先使用命令函数“cp” 即copy的缩写, 一般模式: cp filename 路径. 如file1在A目录下,我们想把file1复制到B目录下 命令为 cp file1 /home/B ...
- VS生成时复制文件到指定目录
1.右键项目属性,选择生成事件,再点击"编辑后生成事件",可以直接在编辑框内填写命令行,如图: 2.也可以在弹出的编辑框内,写命令,$(ProjectDir)这种是系统的宏路径,具 ...
- Unix 复制文件至指定目录
cp /gaps/log/20160504/bxdx_20160504.log.Z /home 将/gaps/log/20160504/bxdx_20160504.log.Z 文件复制到home路 ...
- ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录
前言 在.NET Core之前对于压缩样式文件和脚本我们可能需要借助第三方工具来进行压缩,但在ASP.NET MVC Core中则无需借助第三方工具来完成,本节我们来看看ASP.NET Core MV ...
- scp复制文件到指定端口
1.scp基本格式 scp file user@host:/dir 2.scp复制文件到指定端口 scp默认连接的端口是22端口,如果ssh不是使用标准的22端口则使用-P(P大写)指定: scp - ...
- 不借助autolt实现下载文件到指定目录
今天尝试了下不用借助autolt完成下载文件到指定目录, 好处:在于集成回归,远程机可以绕过执行autolt程序权限问题,导致autolt程序无法调用,不能完成脚本的回归 Firefox浏览器已经成功 ...
随机推荐
- docker容器composer 部署 laravel框架
首先yum install docker 安装docker service docker start 启动docker docker pull docker.io/skiychan/ng ...
- nodejs前端接口与状态转换调试
和UI无关的逻辑用browser 调有时不太方便,配置 node 命令行调试环境方法如下: cnpm install @babel/core @babel/cli @babel/register @b ...
- php使用redis的GEO地理信息类型
redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作. <?php $redis = new Redis(); $redi ...
- spring与disruptor集成的简单示例[z]
[z]https://www.jb51.net/article/135475.htm disruptor不过多介绍了,描述下当前的业务场景,两个应用A,B,应用 A 向应用 B 传递数据 . 数据传送 ...
- node.js 使用NAPI写C++插件,(部分转帖)
原文:https://www.cnblogs.com/chyingp/p/nodejs-learning-napi.html 可能是版本问题,我用node v10.6.0 遇到了问题 不过解决了. 一 ...
- Docker 镜像使用
当运行容器是,使用的镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地Docker主机镜像 ...
- Vue源码解析---数据的双向绑定
本文主要抽离Vue源码中数据双向绑定的核心代码,解析Vue是如何实现数据的双向绑定 核心思想是ES5的Object.defineProperty()和发布-订阅模式 整体结构 改造Vue实例中的dat ...
- XBee 802.15.4/Digimesh FAQs:如何为2.4G模块选择合适的信道
XBee 802.15.4模块和XBee Digimesh模块在硬件上完全相同,只是出厂带有不同固件,如果测试需要,这两个固件可以都可以互换烧入模块中. 如何为2.4G模块选择合适的信道 IEEE 8 ...
- 2019.03.25 bzoj2329: [HNOI2011]括号修复(fhq_treap)
传送门 题意简述: 给一个括号序列,要求支持: 区间覆盖 区间取负 区间翻转 查询把一个区间改成合法括号序列最少改几位 思路: 先考虑静态的时候如何维护答案. 显然把所有合法的都删掉之后序列长这样: ...
- MFC改变坐标系
1.在MainFrm中的PreCreateWindow中设置默认窗口大小 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !C ...