你的位置:首页 > ASP.net教程

[ASP.net教程]小学生之文件操作


如何读写文件

  

//创建文件流FilesStream myfs=new FilesStream(path,FileMode.Create);//创建写入器StreamWriter mySw=new StreamWriter(myfs);//将录入的内容写入文件mySw.Write("我是好人");//关闭写入器mySw.Close();//关闭文件流myfs.Close();

 

1.保持内存中数据持久化的方案?

解析:数据库保存(也是文件:XXX.MDF)

      文件(文本文件,

2.讲FileMode取值

  FileMode.Create:看对应目录下是否有该文件,如果有覆盖,不会报错

  CreateNew新建一个文件。如果文件存在会发生异常,提示文件已经存在

  FileMode.Open():打开指定路径下已有文件,为读取文件做好准备工作.

  FileMode.OpenOrCreate():有的话,就读,没有就写

  FileMode.Append:在原有文件的结尾追加新的内容

3.讲读取文件设置编码

解析:  StreamReader sr = new StreamReader(fs,Encoding.GetEncoding("utf-8"));

4.IO原理图

练习,需求说明:

  实现小型资源管理器,支持显示文件信息

  使用TreeView控件显示文件夹结构

  使用ListView控件显示选定文件夹下文件列表

 1     /// <summary> 2     /// 将数据绑定到TreeView控件中的根节点 3     /// </summary> 4     private void LoadTreeView()  5     { 6  7      DirectoryInfo dir = new DirectoryInfo(@"E:\"); 8       //返回当前目录的子目录 9      DirectoryInfo[] dirs= dir.GetDirectories();10      foreach (DirectoryInfo item in dirs)11       {12        TreeNode tn = new TreeNode();13        tn.Text = item.Name;14        tn.Tag = item.FullName;15        this.treeView1.Nodes.Add(tn);16       }17      18     }19     private void Form1_Load(object sender, EventArgs e)20     {21       LoadTreeView();22 23     }24     /// <summary>25     /// 绑定子目录26     /// </summary>27     /// <param name="node"></param>28     private void BindInfo(TreeNode node) 29     {30       DirectoryInfo dir = new DirectoryInfo(node.Tag.ToString());31       DirectoryInfo[] dirs = dir.GetDirectories();32       foreach (DirectoryInfo item in dirs)33       {34         TreeNode tn = new TreeNode();35         tn.Text = item.Name;36         tn.Tag = item.FullName;37         node.Nodes.Add(tn);38       }39       //获取目录下文件列表,dir是目录对象40       FileInfo[] fileInfo = dir.GetFiles();41       //定义泛型集合存储文件信息42       List<MyFile> files = new List<MyFile>();43       //遍历文件列表44       foreach (FileInfo item in fileInfo)45       {46         MyFile file = new MyFile();47         file.FileName = item.Name;48         float value = item.Length;49         file.FileLength = float.Parse(Math.Round(value / 1024, 2).ToString());50         file.FileType = item.Extension;51         file.FilePath = item.FullName;52         files.Add(file);53       }54       if (this.listView1.Items!=null)55       {56         this.listView1.Items.Clear();57       }58       foreach (MyFile item in files)59       {60         ListViewItem lvItem = new ListViewItem(item.FileName);61         lvItem.SubItems.Add(item.FileLength.ToString());62         lvItem.SubItems.Add(item.FileType);63         lvItem.SubItems.Add(item.FilePath);64         this.listView1.Items.Add(lvItem);65       }66     }67     //单击绑定文件和文件夹信息68     private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)69     {70       //获取TreeView控件中选中的节点71       TreeNode node = this.treeView1.SelectedNode;72       BindInfo(node);73 74     }

实现文件复制和删除

 1     private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) 2     { 3       //用户选择目标文件夹 4     DialogResult result= folderBrowserDialog1.ShowDialog(); 5      if (result==DialogResult.OK) 6       { 7        //源文件路劲 8        string sourcePath = this.listView1.SelectedItems[0].SubItems[3].Text; 9        //目标文件路劲10        string desPath = folderBrowserDialog1.SelectedPath;11        desPath += "\\" + this.listView1.SelectedItems[0].SubItems[0].Text;12        //复制文件13         File.Copy(sourcePath, desPath);14        MessageBox.Show("复制成功!!!");15       }16     }17 18     private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)19     {20       string sourcePath = this.listView1.SelectedItems[0].SubItems[3].Text;21       File.Delete(sourcePath);22       MessageBox.Show("删除成功!!");23       TreeNode node = this.treeView1.SelectedNode;24       BindInfo(node);25     }


总结:

1.读写文件的5个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。

2.文件流的类是FileStream,创建一个文件流时,需要指定操作文件的路劲,文件的打开形式和文件的访问方式。

3.StreamWriter是一个写入器,StreamReader是一个读取器。

4.File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹进行操作,它们都是静态类。

5.静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问成员,非静态类使用她的实例访问成员。

6.FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以考虑使用FileInfo类,因为并不总是需要安全检查的。

7.DirectoryInfo类于Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法。