C# WinForm拖拽文件+获取exe程序所在目录上上上级目录+复制单个文件并保存+复制某文件夹内文件到另一文件夹
【基于C# winform 界面拖拽pdf文件+调用Qpdf的小程序解密后+另存到新文件夹】代码
C# WinForm
C#拖拽文件
C#获取exe程序所在目录上上上级目录
C#复制单个文件并保存
C#复制某文件夹内文件到另一文件夹
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;
using System.Diagnostics;namespace WinFormsApp1 {public partial class Form1 : Form {public Form1() {InitializeComponent();}void Init() {this.AllowDrop = true; //设置为允许拖拽}private void ListView1_DragEnter(object sender, DragEventArgs e) {if (e.Data.GetDataPresent(DataFormats.FileDrop)) {e.Effect = DragDropEffects.Link;}else {e.Effect = DragDropEffects.None;}}string str01;private void ListView1_DragDrop(object sender, DragEventArgs e) {IDataObject ido = e.Dataif (ido.GetDataPresent(DataFormats.FileDrop)) //如果拖动的数据是文件类型{string[] filepaths = (string[])ido.GetData(DataFormats.FileDrop); //获取文件的路径DirectoryInfo info = new DirectoryInfo(Application.StartupPath);string exePath = info.Parent.Parent.Parent.FullName;//上上上级目录string paths01 = Path.Combine(exePath, "output");System.IO.Directory.CreateDirectory(paths01);//在上上上级目录下创建output文件夹,如果存在也不会重复创建01DirectoryInfo dir01 = new DirectoryInfo(paths01);dir01.Delete(true);//删除output文件夹System.IO.Directory.CreateDirectory(paths01);//创建onput文件夹,如果存在也不会重复创建01string paths02 = Path.Combine(exePath, "input");System.IO.Directory.CreateDirectory(paths02);//创建input文件夹,如果存在也不会重复创建02DirectoryInfo dir02 = new DirectoryInfo(paths02);dir02.Delete(true);//删除input文件夹System.IO.Directory.CreateDirectory(paths02);//创建input文件夹,如果存在也不会重复创建02//执行我们想要执行的业务逻辑,读取复制等等。foreach (var item in filepaths) {string extension = System.IO.Path.GetExtension(item);//string A = ".pdf";if (String.Compare(extension, A) == 0) {FileInfo f = new FileInfo(item);string fname = Path.GetFileName(item);//带扩展名的文件名string paths03 = Path.Combine(paths02, fname);//路径与文件名合并为新路径paths03f.CopyTo(paths03);//单个文件复制到paths03 ;因为paths03是包含“带扩展名的文件名”的存储路径,故复制的文件不会重命名,文件名与原文件一致 }else {MessageBox.Show("error!");str01 = "0";}}Process proc = null;try {string targetDir = string.Format(exePath);//需调用的程序 unlockpdf.bat 在目录exePath中proc = new Process();proc.StartInfo.WorkingDirectory = targetDir;proc.StartInfo.FileName = "unlockpdf.bat";proc.StartInfo.Arguments = string.Format("10");//this is argument//调用程序时的参数proc.StartInfo.CreateNoWindow = true;proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//这里设置DOS窗口不显示,经实践可行proc.Start();proc.WaitForExit();}catch (Exception ex) {Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());}// MessageBox.Show("解除密码完成!");if (String.Compare(str01, "0") != 0) {FolderBrowserDialog dilog = new FolderBrowserDialog();dilog.Description = "请选择保存解密结果文件夹";if (dilog.ShowDialog() == DialogResult.OK || dilog.ShowDialog() == DialogResult.Yes) {string saveDirPath = dilog.SelectedPath;try {if (!Directory.Exists(saveDirPath)) {Directory.CreateDirectory(saveDirPath);}string[] files = Directory.GetFiles(paths01);//获取output文件夹里的所有文件foreach (string file in files) {string pFilePath = saveDirPath + "\\" + Path.GetFileName(file);if (File.Exists(pFilePath))continue;File.Copy(file, pFilePath, true);//将文件保存到选择的文件夹}}catch (Exception ex) {MessageBox.Show(ex.Message);}}}}else {MessageBox.Show("error!");}}}
}
本人C#小白,摸索查询了一整天搞了这个东东。
用途与背景:PDF文档密码破解(https://zhuanlan.zhihu.com/p/74141259)
压缩文件:PDFunlocker界面+【Qpdf】version-8.4.2-64.zip
效果图如下:
C# WinForm拖拽文件+获取exe程序所在目录上上上级目录+复制单个文件并保存+复制某文件夹内文件到另一文件夹相关推荐
- android可拖拽九宫格,微信小程序实现九宫格图片拖拽
(在真机上的效果就不演示了,是差不多的) 实现思路 布局 在这里运用到了微信小程序的moveable-area和moveable-view两个标签. moveable-area是可拖拽的区域,需要设置 ...
- qt 获取当前程序运行路径_Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法...
Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...
- MFC获取应用程序所在目录--CString(Left、Right、Find、ReverseFind)--Cstring与char或wchar转换
一.CString--Left.Right.Find.ReverseFind CString--Left.Right.Find.ReverseFind CString::Left(intnCount) ...
- java获取上级目录_Java如何获取文件的父目录或上级目录?
在Java程序中,如何获取文件的父目录或上级目录? 以下示例显示如何使用File类的file.getParent()方法获取文件的父目录. package com.yiibai; import jav ...
- Python 获取当前文件 当前目录 上级目录 上上级目录
Python 获取当前文件 当前目录 上级目录 上上级目录 文章目录 Python 获取当前文件 当前目录 上级目录 上上级目录 前言 一.获取当前文件 二.获取当前目录 三.读入数据 四.获取上上级 ...
- python 获取当前目录 上一级目录 上上一级目录
一 目录层级关系如下图 当前py文件为当前目录下的python.py 二 获取当前目录 上级目录 上上级目录 import osprint('***获取当前目录***') print(" ...
- Python - 获取当前目录/上级目录/上上级目录
/ 前言 / 我们在Python开发中时常需要读取配置文件.获取当前文件所在路径, 本文将会介绍Python获取当前目录/上级目录/上上级目录-等操作 Python脚本编译时使用的是Py ...
- js控制文件拖拽,获取拖拽内容。
在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...
- js控制文件拖拽,获取拖拽内容
在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...
最新文章
- python信用卡违约_Python信用卡验证
- MBG 相关资源链接
- php 检测网络,PHP+Ajax 检测网络是否正常实例详解
- 【STM32】OLED 显示实验代码详解
- Spring LDAP 2.0.0发布
- 成本管控难题怎么破?BI大神带你一步步拆解分析,节省成本390万
- java super.getclass_Java Class 类 getSuperClass()方法及示例
- preg_match进行正则表达式匹配
- 读书笔记_打开量化投资的黑箱06
- 忽略这一点,人工智能变人工智障的!
- EBS AP 创建会计科目失败
- javascript创建对象过程
- 读书笔记:-----《第四次工业革命转型的力量》
- aws php 上传文件 限制大小_单个文件大小 上传百度云盘 微信发送 有大小限制 怎么破?...
- 人工智能时代创造少儿编程实用能力
- Git系列(五):Git Flow
- 45-网上商城数据库-商品分类数据操作(二)
- 小米手机怎么关闭移动卡信号显示无服务器,一条指令代码教你解决小米手机信号和待机问题...
- 转自BMY 海量数据的处理
- 海思A182-Hi3516DV300推流摄像头数据
热门文章
- 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量相关例题
- Matlab:实现菲涅尔矩形孔衍射仿真
- 华为网络技术大赛笔记——存储器基础原理
- c++编写浪漫烟花 表白代码大全
- Ubuntu16.04安装Hadoop2.7.3教程
- Android开发--内容提供者(Content provider)
- android Textview属性细节以及EditText属性
- siamfc代码解读_SiamFC用于目标跟踪的全卷积孪生网络 fully-convolutional siame
- Opencv3 core模块解析之convertTo
- 解决python的OverflowError: int too large to convert to float