码迷,mamicode.com
首页 > 其他好文 > 详细

小学生之文件操作

时间:2015-07-18 00:26:51      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

如何读写文件

  

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

 

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

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

      文件(文本文件,xml文件,XX.bin)

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类的实例方法。

 

小学生之文件操作

标签:

原文地址:http://www.cnblogs.com/1600kun/p/4655862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!