2016-05-09 22:04:32 IstarI 阅读数 1825

第一篇介绍一下C#文件的一些常用操作

最常用的基本操作有:(1)文件类File(2)文件夹类Directory(3)文件信息类FileInfo(4)文件夹信息类DirectoryInfo

流操作:(1)文件流类:FileStream(2)流写入类StreamWriter(3)流读取类StreamReader(4)二进制流写入类BinaryWriter(5)二进制流读取类BinaryReader

静态类

File

文件类的操作

(1)文件的创建和打开

(2)复制文件

(3)删除文件

(4)文件的加密和解密

(5)文件读取

基本就是以上5种操作,这里主要是介绍一下文件的加密和解密,其余的操作根据File相应的方法就可以写出来。

文件加密的方式有很多,小菜这里先介绍一个我知道的加密方式

(1)首先把需要加密的文件压缩成一个压缩包

(2)然后在winform上写一个窗体实现一个加密拷贝的小程序


(3)在按钮的点击事件中开始写代码

首先用文件流对文件进行读操作,然后进行写操作。定义5K的二进制流传输速率。下面就是加密操作,这里的加密就是将二进制传输过程中每次byte[]5k字节传输中的内容改变一下,然后再执行写入操作。这样执行完毕之后就不能打开。

<span style="font-family:Microsoft YaHei;font-size:18px;">using (FileStream fsRead=new FileStream (source,FileMode .Open ,FileAccess .Read ))
            {
                using (FileStream fswrite=new FileStream (target,FileMode.Create , FileAccess.Write ))
                {
                    byte[] bytes = new byte[1024 * 5];
                    int count = 0;
                    while ((count=fsRead .Read (bytes,0,bytes.Length))>0)
                    {
                        //加密,其实就是把byte【】字节中的内容改变一下,然后再执行写入操作
                        for (int i = 0; i < count; i++)
                        {
                            bytes[i] = (byte)(byte.MaxValue - bytes[i]);

                        }

                        //拷贝
                        fswrite.Write(bytes, 0, count);
                    }
                }
            }</span>

(4)解密操作,将窗体上的目标文件写到源文件文本框中,然后目标文件再写一个别的路径,就相当于二进制字节流传输正确了。然后就可以打开了。

Directory

文件夹类的操作

(1)创建文件夹

(2)删除文件夹

(3)获取文件夹

实例类

FileInfo

DirectoryInfo

2016-12-07 14:46:05 FairyStepWGL 阅读数 293

有时候在C#的一些项目中会出现这样或那样的操作文件的需求,正好最近有些时间就整理出来供大家在项目中遇到同样问题的时候可以参考。如果有什么不正确的地方大家可以留言提醒……直接代码

  • SaveFileDialog
  • OpenFileDialog
  • 轻松获取路径中文件名、目录、扩展名等

SaveFileDialog() 保存对话框

private void SaveFileDialog()
{
//string localFilePath, fileNameExt, newFileName, FilePath;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
//设置文件类型
saveFileDialog1.Filter = ” txt files(.txt)|.txt|All files(.)|.“;
//设置默认文件类型显示顺序
saveFileDialog1.FilterIndex = 2;
//保存对话框是否记忆上次打开的目录
saveFileDialog1.RestoreDirectory = true;
//点了保存按钮进入
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
//获得文件路径
//localFilePath = saveFileDialog1.FileName.ToString();
//获取文件名,不带路径
//fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf(“\”) + 1);
//获取文件路径,不带文件名
//FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf(“\”));
//给文件名前加上时间
//newFileName = DateTime.Now.ToString(“yyyyMMdd”) + fileNameExt;
//在文件名里加字符
}
}


OpenFileDialog () 创建对话框
private void btnUpload_Click(object sender, EventArgs e)
{
//创建一个对话框对象
OpenFileDialog ofd = new OpenFileDialog();
//为对话框设置标题
ofd.Title = “请选择上传的图片”;
//设置筛选的图片格式
ofd.Filter = “图片格式|*.jpg”;
//设置是否允许多选
ofd.Multiselect = false;
//如果你点了“确定”按钮
if (ofd.ShowDialog()== System.Windows.Forms.DialogResult.OK)
{
//获得文件的完整路径(包括名字后后缀)
string filePath = ofd.FileName;
//将文件路径显示在文本框中
txtImgUrl.Text = filePath;
//找到文件名比如“1.jpg”前面的那个“\”的位置
int position = filePath.LastIndexOf(“\”);
//从完整路径中截取出来文件名“1.jpg”
string fileName = filePath.Substring(position+1);
//读取选择的文件,返回一个流
using (Stream stream = ofd.OpenFile())
{
//创建一个流,用来写入得到的文件流(注意:创建一个名为“Images”的文件夹,如果是用相对路径,必须在这个程序的Degug目录下创建
//如果是绝对路径,放在那里都行,我用的是相对路径)
using (FileStream fs = new FileStream(@”./Images/” + fileName, FileMode.CreateNew))
{
//将得到的文件流复制到写入流中
stream.CopyTo(fs);
//将写入流中的数据写入到文件中
fs.Flush();
}
//PictrueBOx 显示该图片,此时这个图片已经被复制了一份在Images文件夹下,就相当于上传
//至于上传到别的地方你再更改路径
pbShow.ImageLocation = @”./Images/” + fileName;
}
}
}


获取相应的文件信息
System.IO.Path对包含文件或目录径信息的String实例执行操作。
1、ChangeExtension:更改路径字符串的扩展名
2、Combine(String[]):将字符串数组组合成一个路径
3、Combine(String,String):将两个字符串组合成一个路径
4、Combine(String,String,String):将三个字符串组合成一个路径,四个参数就是将四个字符串组合成一个路径。
5、GetDirectoryName:返回指定字符串的目录信息。
6、GetExtension:获取指定字符串的目录信息。
7、GetFileNameWithoutExtension:返回不具有扩展名的指定路径字符串的文件名。
8、GetFullPath:返回指定路径字符串的绝对路径
9、GetPathRoot:获取指定路径的根目录信息。
10、GetRandomFileName:获取随机文件名或文件夹名

string path = “C:\dir1\dir2\foo.txt”;
string str = “GetFullPath:” + Path.GetFullPath(path) + “\r\n”;
str += “GetDirectoryName:” + Path.GetDirectoryName(path) + “\r\n”;
str += “GetFileName:” + Path.GetFileName(path) + “\r\n”;
str += “GetFileNameWithoutExtension:” + Path.GetFileNameWithoutExtension(path) + “\r\n”;
str += “GetExtension:” + Path.GetExtension(path) + “\r\n”;
str += “GetPathRoot:” + Path.GetPathRoot(path) + “\r\n”;
MessageBox.Show(str);

结果:
GetFullPath:C:\dir1\dir2\foo.txt
GetDirectoryName:C:\dir1\dir2
GetFileName:foo.txt
GetFileNameWithoutExtension:foo
GetExtension:.txt
GetPathRoot:C:\

2018-10-10 22:14:16 weixin_41732430 阅读数 310

记录八月份写的一个小工具,当需要处理的很多数据在文件名中存在时,
1,使用Directory类下的GetDirectories方法根据文件地址打开文件获取目录。
2,然后再使用DirectoryInfo类下的GetFiles获取具体文件。
3,根据具体文件获取文件名,大小等信息。
4,导出至EXCEL

命名空间注意:
File类需要System.IO
Excel需要Aspose.Cells
一、选择文件夹返回文件地址

private void btn_Select_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FBDialog = new FolderBrowserDialog();
            if (FBDialog.ShowDialog() == DialogResult.OK)
            {
                string strPath = FBDialog.SelectedPath;
                txt_File.Text = strPath;
            }
        }

二、遍历获取当前文件夹下的文件信息
winform窗体中可以有一个ListViewItem组件,便于返回文件信息。


private void button2_Click(object sender, EventArgs e)
        {
            try
            {
            DirectoryInfo dir2 = new DirectoryInfo(txt_File.Text);
            foreach (FileInfo file in dir2.GetFiles("*.wav"))
            {
                ListViewItem item = new ListViewItem();
                // strAA = strAA + file.Name +"   "+file.Length/1024+"kb"+ "\r\n";
                item.Text = file.Name.Substring(0, 8);
                item.SubItems.Add(file.Name.Substring(9, 6));
                item.SubItems.Add(file.Name.Substring(17, 5));
                item.SubItems.Add(file.Length / 1024 + "kb");
                listView1.Items.Add(item);//代码中创建的ListViewItem中的item信息返回给winform中创建的listView组件。

            }                        
            }
            catch
            {

            }
        }

三、遍历获取三级文件夹下的文件

        private void button1_Click(object sender, EventArgs e)
    {

        try
        {
            string[] dirs = Directory.GetDirectories(txt_File.Text);

            for (int i = 0; i < dirs.Length; i++)
            {
                string[] udirs = Directory.GetDirectories(dirs[i]);
                for (int j = 0; j < udirs.Length; j++)
                {
                    DirectoryInfo dir = new DirectoryInfo(udirs[j]);
                    foreach (FileInfo file in dir.GetFiles("*.wav"))//获取wav文件的分段的文件名信息和大小,详细可参考GetFiles的具体用法。
                    {
                        ListViewItem item = new ListViewItem();
                        // strAA = strAA + file.Name +"   "+file.Length/1024+"kb"+ "\r\n";
                        item.Text = file.Name.Substring(0,8);
                        item.SubItems.Add(file.Name.Substring(9, 6));
                        item.SubItems.Add(file.Name.Substring(17, 5));
                        item.SubItems.Add(file.Length / 1024 + "kb");
                        listView1.Items.Add(item);

                    }
                }

            }

        }
        catch
        {

        }
    }

四、将listView组件里的信息导出至EXCEL
(一)、导出至EXCEL的函数

public void SaveToExcel(ListView listview, /*List<int> columnwidth,*/ string title)
        {
            string path;
            SaveFileDialog filedialog = new SaveFileDialog();
            filedialog.Filter = "Excel file(*,xls)|*.xls";
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                path = filedialog.FileName;
                //新建excel
                Workbook wb = new Workbook();
                Worksheet ws = wb.Worksheets[0];
                Cells cell = ws.Cells;
                //储存数据到数组
                string[,] _dataReport = new string[listview.Items.Count, listview.Columns.Count];
                for (int i = 0; i < listview.Items.Count; i++)
                {
                    for (int j = 0; j < listview.Columns.Count; j++)
                    {
                        _dataReport[i, j] = listview.Items[i].SubItems[j].Text.ToString();
                    }
                }
                Range range1 = cell.CreateRange(0, 0, 2, listview.Columns.Count);
                range1.Merge();
                //标题style
                cell.SetRowHeight(0, 40);
                Style style1 = wb.Styles[wb.Styles.Add()];
                style1.HorizontalAlignment = TextAlignmentType.Center;
                style1.Font.Name = "宋体";
                style1.Font.IsBold = true;
                style1.Font.Size = 20;
                //内容style
                Style style2 = wb.Styles[wb.Styles.Add()];
                style2.HorizontalAlignment = TextAlignmentType.Center;
                style2.Font.Size = 14;
                //储存标题和内容(A1和此时(0,0)一样)
                cell["A1"].PutValue(title);
                cell["A1"].SetStyle(style1);
                //第二行内容
               
                cell[2, 0].PutValue("名称1");
                cell[2, 1].PutValue("名称2");
                
                cell[2, 0].SetStyle(style2);
                cell[2, 1].SetStyle(style2);
                //第三行以后内容
                int posStart = 3;
                for (int i = 0; i < listview.Items.Count; i++)
                {
                    for (int j = 0; j < listview.Columns.Count; j++)
                    {
                        cell[i + posStart, j].PutValue(_dataReport[i, j].ToString());
                        cell[i + posStart, j].SetStyle(style2);
                    }
                }
                //合并单元格显示时间(注意合并完之后,对于本身的行变量和列变量的计数并没有变化。)(B5和此时(4,1)一样)
               /* Range range2 = cell.CreateRange(4, 1, 1, 2);
                range2.Merge();
                cell["B5"].PutValue(_dataReport[listview.Items.Count - 1, listview.Columns.Count - 1].ToString());
                cell["B5"].SetStyle(style2);
                for (int i = 0; i < listview.Columns.Count; i++)
                {
                    cell.SetColumnWidth(i, Convert.ToDouble(columnwidth[i].ToString()));
                }*/
                //储存
                try
                {
                    wb.Save(path);
                    MessageBox.Show("成功");
                    //textBox5.AppendText(DateTime.Now.ToString() + " 储存成功。位置:" + path.ToString() + "\r\n");
                }
                catch (Exception e)
                {
                    MessageBox.Show("失败,原因:" + e);
                    //textBox5.AppendText(DateTime.Now.ToString() + "储存失败。");
                }
            }

        }

(二)、调用函数

 private void btn_Put_Click(object sender, EventArgs e)
        {
            SaveToExcel(listView1,"获取的数据");
        }
2018-04-04 15:09:25 tiegenZ 阅读数 350

阅读本文前建议先观看C#操作配置文件

1.App.config文件配置文件夹路径以及指定时间

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="path" value="E:\\GetTime\\"/>
    <add key="create_time" value="2018-03-29 10:20:00"/>
  </appSettings>
</configuration>
2.示例代码
           //读取配置文件数据
            string path = ConfigurationManager.AppSettings["path"];         //文件所在目录
            string ct = ConfigurationManager.AppSettings["create_time"];     //指定的文档创建时间
            Console.WriteLine(path + "----"+ct+"===="+ Convert.ToDateTime(ct));
            Console.ReadLine();
           
            IEnumerable<string> list = Directory.GetFiles(path).Where(p => File.GetCreationTime(path) > Convert.ToDateTime(ct));
            foreach (string fruit in list)    //遍历xxxx时间后生成的文件
            {
                Console.WriteLine(fruit);  //输出指定时间后生成的文件名
                Console.ReadLine();   
                //获取最新生成的文件的创建时间
                FileInfo fi = new FileInfo(fruit);
                Console.WriteLine(fruit+"创建时间"+fi.CreationTime );
                Console.ReadLine();
                //修改配置文件时间
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.AppSettings.Settings["create_time"].Value = fi.CreationTime.ToString();
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");  }

2016-11-25 11:08:48 LiHaoYang11 阅读数 7347

C# 获取文件的各个时间如下:

*属性*                  *功能和用途*

Attributes              返回和文件相关的属性值,运用了FileAttributes枚举类型值

CreationTime            返回文件的创建时间

Exists                  检查文件是否存在于给定的目录中

Extension               返回文件的扩展名

LastAccessTime          返回文件的上次访问时间

FullName                返回文件的绝对路径

LastWriteTime           返回文件的上次写操作时间

Name                    返回给定文件的文件名

Delete()                删除一个文件的方法,请务必谨慎地运用该方法

演示Demo

FileInfo fi = new FileInfo("E:\\text.txt");
Response.Write("创建时间:" + fi.CreationTime.ToString() + "写入文件的时间" + fi.LastWriteTime + "访问的时间" + fi.LastAccessTime);

获取系统时间

     DateTime DT = System.DateTime.Now;
     string dt = System.DateTime.Now.ToString();

C#ini文件操作

阅读数 85

没有更多推荐了,返回首页