winform文件修改器

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication3
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            cbb_xuanze.SelectedIndex = 0;
        }

        private void btn_Choice_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.ShowDialog();//选择路径
            //folderBrowserDialog1.Multiselect = true;
            text_Choice.Text = folderBrowserDialog1.SelectedPath;
            //btn_TiHuan.Enabled = true;
            //btn_guize.Enabled = true;
        }

        private void btn_TiHuan_Click(object sender, EventArgs e)
        {
            Execute(1);
            shuaxin();
        }
        private void btn_guize_Click_1(object sender, EventArgs e)
        {
            Execute(2);
            shuaxin();
        }
        private void Execute(int click)
        {
            string strlujing = text_Choice.Text.Trim();
            string strold = text_old.Text;
            string strnew = text_new.Text;
            string strchong = text_chong.Text;
            //由于原来一直都没注意到这两个方法,一直使用string.IsNullOrEmpty,当看到string.IsNullOrWhiteSpace时,而且在微软人员开发的项目中经常使用时才注意到,查了一下MSDN,记一下免得以后忘记。
            //string.IsNullOrEmpty
            //都知道,这个功能是判断字符串是否为:null或者string.Empty。如果是如"\t"这样的字符就返回false了,为了达到判断过滤这些功能,就要使用Trim()和Length属性帮忙,判断是否长度为零,于是乎就产生了如下的方法。
            //string.IsNullOrWhiteSpace
            //这个是判断所有空白字符,功能相当于string.IsNullOrEmpty和str.Trim().Length总和,他将字符串给Char.IsWhiteSpace为ture的任何字符都将是正确的。根据MSDN的说明,这个方法会比调用上述两个方法的性能更高而且简洁,所以在判断这个功能时,推荐使用。
            if (string.IsNullOrWhiteSpace(strlujing))
            {
                MessageBox.Show("请选择文件夹!");
            }
            else if (!Directory.Exists(strlujing))//确定给定路径是否引用磁盘上的现有目录,返回值为bool,如果 path 引用现有目录,则为 true;否则为 false。
            {
                MessageBox.Show("所指定的文件夹不存在!");
            }
            else
            {
                int num = 0;
                try
                {
                    string[] wenjian = Directory.GetFiles(strlujing);
                    //返回指定目录中与指定的搜索模式匹配的文件的名称(包含它们的路径)。参数类型:System.String要搜索的目录。
                    //返回值
                    //类型:System.String[]
                    //指定目录中与指定的搜索模式匹配的文件的全名(包含它们的路径)的数组。
                    pb_JinDuTiao.Maximum = wenjian.Length;
                    StringBuilder way = new StringBuilder();//拼接字符串 类似于+=   用来定义文件名
                    //StringBuilder 上的主要操作是 append 和 insert 方法。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。
                    int i = 0;//成功操作个数。
                    if (wenjian == null || wenjian.Length == 0)
                    {
                        MessageBox.Show("文件夹中不存在文件!");
                        //MessageBoxButtons.OK:消息框包含“确定”按钮。MessageBoxButtons指定若干常数,用以定义 MessageBox 上将显示哪些按钮;
                        //MessageBoxIcon指定定义哪些信息要显示的常数。: MessageBoxIcon.Asterisk该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的。
                    }
                    else
                    {
                        DateTime StartTime = DateTime.Now;
                        foreach (string fileName in wenjian)
                        {
                            pb_JinDuTiao.Value = pb_JinDuTiao.Value + 1;
                            var fileinfo = new FileInfo(fileName);
                            //可以赋予局部变量推断“类型”var 而不是显式类型。 var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。 推断类型可以是内置类型、匿名类型、用户定义类型或 .NET Framework 类库中定义的类型。
                            //提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法继承此类。
                            //将 FileInfo 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。
                            //许多 FileInfo 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步操作文件。有关更多信息,请参见特定的 FileInfo 成员,如 Open、OpenRead、OpenText、CreateText 或 Create。
                            //如果打算多次重用某个对象,可考虑使用 FileInfo 的实例方法,而不是 File 类的相应静态方法,因为并不总是需要安全检查。
                            //默认情况下,将向所有用户授予对新文件的完全读/写访问权限。
                            int index = fileinfo.Name.LastIndexOf('.');
                            way.Length = 0;
                            way.Append(fileinfo.DirectoryName + @"\");
                            switch (click)
                            {
                                case 1://替换 
                                    //文件名存在才进行替换。
                                    if (strold == null || strold.Length == 0)
                                    {
                                        return;
                                    }
                                    if (fileinfo.Name.Substring(0, index > -1 ? index : fileinfo.Name.Length).Contains(strold))
                                    {
                                        way.Append(fileinfo.Name.Substring(0, index > -1 ? index : fileinfo.Name.Length).Replace(strold, strnew));
                                        if (index > -1)
                                        {
                                            way.Append(fileinfo.Name.Substring(index, fileinfo.Name.Length - index));
                                        }
                                        fileinfo.MoveTo(Convert.ToString(way));
                                        i++;
                                    }
                                    break;
                                case 2:
                                    //if (cbb_xuanze.SelectedIndex != 0)
                                    //{
                                    //    MessageBox.Show("此功能尚未完成!");
                                    //    pb_JinDuTiao.Value = 0;
                                    //    num = 0;
                                    //    return;
                                    //}
                                    switch (cbb_xuanze.SelectedIndex)
                                    {
                                        case 0:
                                            if (rdb_qian.Checked == true)
                                            {
                                                way.Append((++num) + strchong);
                                            }
                                            else
                                            {
                                                way.Append(strchong + (++num));
                                            }
                                            if (index > -1)
                                            {
                                                way.Append(fileinfo.Name.Substring(index, fileinfo.Name.Length - index));
                                            }
                                            break;
                                        case 1:
                                            if (rdb_qian.Checked == true)
                                            {
                                            }
                                            else
                                            {
                                            }
                                            break;
                                    }
                                    fileinfo.MoveTo(Convert.ToString(way));//将指定文件移到新位置,并提供指定新文件名的选项。参数:要将文件移动到的路径,可以指定另一个文件名。
                                    i++;
                                    break;
                            }
                        }
                        DateTime EndTime = DateTime.Now;
                        TimeSpan ts = EndTime - StartTime;
                        Text = ("总耗时:" + ts.Minutes + "分" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒");
                        MessageBox.Show("一共操作了:" + i + "个文件");
                        pb_JinDuTiao.Value = 0;
                        num = 0;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("错误信息:" + ex.Message, "错误");
                    pb_JinDuTiao.Value = 0;
                    num = 0;
                }
            }
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            shuaxin();
        }
        public void shuaxin()
        {
            List<string> st = new List<string>();
            foreach (string file in Directory.GetFiles(text_Choice.Text))//获取指定目录下的文件名称,不包括文件夹
            {
                st.Add(file);
            }

            listView1.Columns.Clear();
            listView1.Columns.Add("文件名", 600);
            listView1.Items.Clear();
            for (int i = 0; i < st.Count; i++)
            {
                //listView1.Items.Add(new ListViewItem(new string[] { st[i] }));
                listView1.Items.Add(st[i].ToString());
            }

        }

        private void text_Choice_TextChanged(object sender, EventArgs e)
        {
            if (text_Choice.Text == null || text_Choice.Text.Length == 0 || text_Choice.Text != folderBrowserDialog1.SelectedPath)
            {
                button1.Enabled = false;
            }
            else
            {
                button1.Enabled = true;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
           label3 .Text = DateTime.Now.ToLongTimeString();
        }
    }
}

  

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.ShowDialog();
            textBox1.Text = folderBrowserDialog1.SelectedPath;
        }
        public void meiju(ListView al)
        {
            if (!string.IsNullOrWhiteSpace(textBox1.Text))//判断文本框中是否有内容
            {
                List<string> st = new List<string>();
                foreach (string file in Directory.GetFiles(textBox1.Text))//获取指定目录下的文件名称,不包括文件夹 Directory.GetFiles(textBox1.Text) 为一个数组文件
                {
                    st.Add(file);
                    //MessageBox.Show(file);
                }
                al.Columns.Clear();
                al.Columns.Add("文件名", 600);
                al.Items.Clear();
                for (int i = 0; i < st.Count; i++)
                {
                    al.Items.Add(st[i].ToString());//遍历文件夹内文件
                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            meiju(listView1);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            dandata();
            meiju(listView1);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            duodate();
            meiju(listView1);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            quandate();
            meiju(listView1);
        }
        public void RenameDirectories(string OldPathName, string newPathName)
        {
            int i = 1;
            string[] sDirectories = Directory.GetDirectories(OldPathName);
            foreach (string sd in sDirectories)
            {
                string sdName = Path.GetFileName(sd);//获取文件的名称,没有路径,直接是文件名称
                string sNewName = string.Format(newPathName, i++);//替换,string.Format(a{0},b{1},p1,p2) 输出结果为 a p1,b p2
                string sNewDirectory = Path.Combine(OldPathName, sNewName);//将两个字符串合并
                Directory.Move(sd, sNewDirectory);//重命名文件或移动文件到新的位置
            }
        }
        public void dandata()
        {
            if (listView1.SelectedItems != null)
            {
                string path = listView1.SelectedItems[0].Text;//选中的项
                string fname = Path.GetDirectoryName(path);//获取选中文件所在的目录路径
                string bname = Path.GetFileName(path);//获取选中文件的文件名称(包含后缀如.txt)
                string kname = Path.GetExtension(path);//获取选中文件的后缀名称
                string OldStr = fname + @"\" + bname;
                string NewStr = fname + @"\" + textBox2.Text + kname;
                FileInfo fi = new FileInfo(OldStr);
                fi.MoveTo(NewStr);//将制定文件移动到新位置,并提供新的文件名
            }
        }
        public void duodate()
        {
            List<string> lt = new List<string>();
            if (listView1.SelectedItems != null)
            {
                for (int i = 0; i < listView1.SelectedItems.Count; i++)
                {
                    string sp = listView1.SelectedItems[i].Text;
                    lt.Add(sp);
                }
                for (int i = 0; i < lt.Count; i++)
                {
                    string path = lt[i];
                    string OldStr = Path.GetDirectoryName(path) + @"\" + Path.GetFileName(path);
                    string NewStr = Path.GetDirectoryName(path) + @"\" + textBox2.Text + i.ToString() + Path.GetExtension(path);
                    FileInfo fi = new FileInfo(OldStr);
                    fi.MoveTo(NewStr);//将制定文件移动到新位置,并提供新的文件名
                }
            }
        }
        public void quandate()
        {
            int i = 1;
            if (Directory.GetFiles(textBox1.Text) != null)
            {
                foreach (string file in Directory.GetFiles(textBox1.Text))//获取指定目录下的文件名称,不包括文件夹
                {
                    string OldStr = Path.GetDirectoryName(file) + @"\" + Path.GetFileName(file);
                    string NewStr = Path.GetDirectoryName(file) + @"\" + textBox2.Text + i.ToString() + Path.GetExtension(file);
                    //MessageBox.Show(Path.GetExtension(file));
                    //MessageBox.Show(NewStr);
                    FileInfo fi = new FileInfo(OldStr);
                    fi.MoveTo(NewStr);//将制定文件移动到新位置,并提供新的文件名
                    i++;
                }
            }
        }
    }
}

  

转载于:https://www.cnblogs.com/Mr-xue/p/4607212.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WinForm JSON编辑器是一个用于查看和编辑JSON数据的图形化用户界面工具。它基于WinForm技术开发,提供了一个简单易用的界面,方便用户直观地查看和编辑JSON数据。 使用WinForm JSON编辑器,用户可以打开一个JSON文件或直接输入JSON数据,然后通过树状结构的方式展示JSON数据的层级关系。用户可以展开和折叠不同层级的数据,以便更好地理解和分析数据结构。同时,编辑器还提供了一个文本框区域,用户可以在其中直接编辑JSON数据,方便快捷。 除了查看和编辑JSON数据外,WinForm JSON编辑器还提供了一些辅助功能。例如,用户可以通过搜索功能快速定位到特定的JSON字段,或者使用过滤功能只展示满足条件的字段。用户还可以选择将JSON数据导出为文件或从文件导入JSON数据,方便数据的备份和共享。 WinForm JSON编辑器还支持常见的JSON数据格式验证。它能检测输入的JSON数据是否符合JSON标准,例如括号是否匹配、字段是否重复等。如果有错误或不符合规范的地方,编辑器会提示用户,并且给出相应的错误信息,以便用户及时进行修改和调整。 总的来说,WinForm JSON编辑器提供了一个友好和便捷的界面,帮助用户查看和编辑JSON数据。它不仅提供了常用的功能,还支持数据的导入导出和格式验证,为用户提供了更好的数据处理体验。无论对于开发人员还是普通用户,WinForm JSON编辑器都是一个实用的工具。 ### 回答2: WinForm JSON编辑器是一种可视化工具,用于在Windows桌面应用程序中编辑JSON文件。JSON(JavaScript对象表示)是一种常见的数据交换格式,由键值对组成,易于阅读和理解。 WinForm JSON编辑器提供了一个用户友好的界面,使用户能够轻松地编辑和修改JSON文件。它包含了一个树形结构的视图,用于显示JSON文件的层级关系,并可通过展开或折叠节点来浏览和编辑文件内容。此外,它还提供了语法高亮显示,以突出显示JSON文件中的关键字和值,使之更加易于阅读。 WinForm JSON编辑器还具备数据验证和格式转换的功能。它可以验证用户输入的内容是否符合JSON格式规范,并在有错误或不匹配时提供相应的提示和错误信息。同时,它也支持将JSON文件转换为其他常见的数据格式,如XML或CSV,以满足不同的需求。 此外,WinForm JSON编辑器还具备批量处理的能力。它支持同时打开和编辑多个JSON文件,并可一次性对它们进行保存、导出或导入操作。这样,用户可以方便地管理和处理大量的JSON数据文件。 总之,WinForm JSON编辑器是一种方便实用的工具,可在Windows桌面应用程序中提供JSON文件的编辑和管理功能。它的直观用户界面、数据验证和格式转换的功能,以及批量处理的能力,都使得它成为处理JSON数据的重要工具。 ### 回答3: Winform JSON编辑器是一种基于Windows Forms平台开发的工具,用于编辑JSON文件。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于存储和传输结构化数据。 该编辑器具有以下特点和功能: 1. 用户友好的界面:Winform JSON编辑器采用直观、易用的界面,使用户能够方便地浏览和编辑JSON文件。它提供了树状结构的视图,展示JSON文件的层次结构。 2. 代码高亮:编辑器能够对JSON文件进行代码高亮,使不同类型的JSON元素能够以不同颜色显示,提高可读性。 3. 语法检查:编辑器内置了语法检查功能,能够自动检测JSON文件中的语法错误,并给予提示。这有助于用户避免常见的错误,提高编辑效率。 4. 格式化和压缩:编辑器支持对JSON文件进行格式化和压缩操作。格式化能够将JSON文件进行缩进和换行,提高可读性;压缩则可将JSON文件压缩为一行,减少文件大小。 5. 快速搜索和替换:编辑器提供了搜索和替换功能,使用户能够快速定位和修改JSON文件中的特定元素。 6. 批量操作:编辑器支持批量导入和导出JSON文件,用户可以一次编辑多个文件。此外,还可以对JSON文件进行排序、拆分等批量操作。 7. 多语言支持:编辑器可以切换不同的语言环境,提供多语言界面和验证规则,满足不同用户的需求。 总之,Winform JSON编辑器是一款功能丰富、易用的工具,为用户编辑和处理JSON文件提供了方便和效率。无论是开发者还是非技术人员,都可以通过该编辑器轻松地进行JSON文件的编辑工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值