View Code
  1 View Code
  2  using System;
  3  using System.Collections.Generic;
  4  using System.ComponentModel;
  5  using System.Data;
  6  using System.Drawing;
  7  using System.IO;
  8  using System.Linq;
  9  using System.Reflection;
 10  using System.Text;
 11  using System.Threading.Tasks;
 12  using System.Windows.Forms;
 13  
 14  namespace 文件操作
 15  {
 16  public partial class Form1 : Form
 17  {
 18  public Form1()
 19  {
 20  InitializeComponent();
 21  }
 22  
 23  private void btnPath_Click(object sender, EventArgs e)
 24  {
 25  //改后缀名 改的是字符串 不是真的该文件的后缀名
 26  string str = @"D:\1111\1.tt";
 27  string s = Path.ChangeExtension(str, "jpg");
 28  MessageBox.Show("修改成功" + s);
 29  //合并路径 可以解决不加斜杠的问题
 30  string newPath = Path.Combine(@"c:\temp","1.txt");
 31  MessageBox.Show(newPath.ToString());
 32  //得到指定路径的的父目录
 33  string msg = Path.GetDirectoryName(@"F:\传智播客培训\学习笔记");
 34  MessageBox.Show(msg);
 35  //获取文件的后缀名
 36  //如果不存在则返回空
 37  string kuozhangm = Path.GetExtension(@"F:\传智播客培训\学习笔记\字符串与StringBuilder.docx");
 38  MessageBox.Show(kuozhangm);
 39  
 40  //得到指定路径的文件名包括后缀名(如果传入是一个目录路径 得到的是最后一个目录名)
 41  string names = Path.GetFileName(@"F:\传智播客培训\学习笔记\字符串与StringBuilder.docx");
 42  string paths = Path.GetFileName(@"c:\123");
 43  MessageBox.Show(names + paths);
 44  //得到指定路径的文件名不包括后缀名
 45  string namee = Path.GetFileNameWithoutExtension(@"F:\传智播客培训\学习笔记\字符串与StringBuilder.docx");
 46  MessageBox.Show(namee);
 47  //根据相对路径返回一个绝对路径
 48  string strss = Path.GetFullPath("字符串与StringBuilder.docx");
 49  MessageBox.Show(strss);
 50  //获取系统临时文件夹路径
 51  string rr = Path.GetTempPath();
 52  MessageBox.Show(rr);
 53  //是在临时文件夹下创建一个文件 并且返回路径
 54  string filename = Path.GetTempFileName();
 55  MessageBox.Show(filename);
 56  //获取当前程序执行的路径
 57  string path1 = Assembly.GetExecutingAssembly().Location;
 58  Console.WriteLine(path1);
 59  
 60  }
 61  
 62  private void btnDIC_Click(object sender, EventArgs e)
 63  {
 64  //创建目录 如果目录存在 则不创建
 65  Directory.CreateDirectory("e:\\China");
 66  //删除目录 如果目录下有东西 则报错
 67  Directory.Delete("e:\\China");
 68  //删除所有
 69  Directory.Delete("e:\\China", true);
 70  //判断指定目录是否存在
 71  bool b = Directory.Exists(@"F:\传智播客培训\学习笔记\字符串与StringBuilder.docx");
 72  Console.WriteLine(b);
 73  //当前程序的工作目录,不一定是Debut目录
 74  string strr = Directory.GetCurrentDirectory();
 75  Console.WriteLine(strr);
 76  //得到目录下的所有子目录
 77  string[] patsh = Directory.GetDirectories(@"F:\传智播客培训\学习笔记");
 78  //得到指定目录下的所有文件
 79  string[] files = Directory.GetFiles(@"F:\传智播客培训\学习笔记");
 80  //得到所有盘符
 81  string[] dirs = Directory.GetLogicalDrives();
 82  //得到指定目录的父目录
 83  DirectoryInfo dad=Directory.GetParent(@"F:\传智播客培训\学习笔记");
 84  Console.WriteLine(dad.Name);
 85  //移动文件夹\文件\重命名
 86  Directory.Move("原路径", "目标路径");
 87  }
 88  
 89  private void btnFile_Click(object sender, EventArgs e)
 90  {
 91  
 92  //如果文件不存在则创建一个,如果存在则在原来的基础上追加
 93  File.AppendAllText("f:\\1.txt", "往往i达到");
 94  //File.AppendAllLines //追加一行
 95  //File.Exists("f:\\1.txt") 判断文件是否存在
 96  if( File.Exists("f:\\1.txt"))
 97  {
 98  //读取文本 每一行作为一个元素
 99  string[] lines=File.ReadAllLines("f:\\1.txt");
100  string[] jpg = File.ReadAllLines("f:\\1.jpg");
101  //以指定的格式读取文本 ,Encoding.Default指的的是系统的默认的编码格式
102  string[] liness = File.ReadAllLines("f:\\1.txt",Encoding.Default);
103  string[] linesss = File.ReadAllLines("f:\\1.txt", Encoding.UTF8);
104  string[] linessss = File.ReadAllLines("f:\\1.txt", Encoding.GetEncoding("GB2312"));
105  
106  }
107  
108  //向文件里写内容 
109  File.WriteAllText("f:\\1.txt", "sdsdsfsfsafqw");
110  File.WriteAllText("f:\\1.txt", "sdsdsfsfsafqw",Encoding.UTF8);
111  //未知文件也一样
112  File.WriteAllText("f:\\1.txf", "sdsdsfsfsafqw");
113  //将每一个元素作为一行写入
114  string[] dad={"sdsdsfsfsafqw","sdsdsfsfsafqw"};
115  File.WriteAllLines("f:\\1.txt", dad);
116  //复制文件 不允许覆盖同名文件
117  File.Copy("源文件(包含路径)", "到那里的文件(包含文件名)");
118  //删除指定文件
119  File.Delete("f:\\1.txf");
120  //移动文件
121  File.Move("原文件", "目标文件");
122  //创建文件 如果存在则覆盖
123  File.Create("f:\\2.txf");
124  
125  }
126  
127  private void btnFileInfo_Click(object sender, EventArgs e)
128  {
129  FileInfo info = new FileInfo("f:\\3.txt");
130  long length = info.Length;
131  Console.WriteLine(length/1024/1024);
132  
133  }
134  
135  private void btnDirectoryInfo_Click(object sender, EventArgs e)
136  {
137  DirectoryInfo diri = new DirectoryInfo(@"d:\A");
138  }
139  
140  private void btnStream_Click(object sender, EventArgs e)
141  {
142  //文件流
143  //144  //第一个参数路径(这个管道指向那个文件),第二个参数表示管道的类型(这个管道干嘛去)
145  FileStream fs = new FileStream("f:\\3.txt",FileMode.Open);
146  //准备一个byte数组 用来存储读取出来的内容
147  byte[] buffer=new byte[1024*1024];
148  fs.Read(buffer, 0, buffer.Length);//返回是读取的真实的长度
149  //以指定的编码方式将byte数组转换为字符串
150  string content =Encoding.Default.GetString(buffer);
151  
152  fs.Dispose();
153  //创建文件流
154  //准备字节数组
155  //将内容读取到字节数组中
156  //将字节数组以指定的编码方式转换为字符串
157  //关闭管道
158  
159  
160  //161  //创建文件流 现在要保存 所以文件的模式为Create
162  FileStream stream=new FileStream("f:\\4.txt",FileMode.Create);
163  //得到字符串
164  string contentr = "ddfasfoaskofnaskonfkoasmfkoasmkofmkoa";
165  //将字符串转换为字节数组 以指定编码将字符串转换为byte数组
166  byte[] butterr = Encoding.Default.GetBytes(content);
167  stream.Write(butterr, 0, butterr.Length);
168  stream.Dispose();
169  }
170  }
171  }

 

文件流操作步骤
View Code
 1         private void button2_Click(object sender, EventArgs e)
 2         {
 3             //创建文件流  第1个参数路径(这个管道指向的文件) 第2个参数表示管道的类型(这个管道是去干吗的?)
 4             FileStream fs = new FileStream(@"d:\\1.txt", FileMode.Open);
 5             //准备1个byte数组 用来存储读取出来的内容
 6             byte[] buffer = new byte[1024 * 1024];
 7             //读取 并将内容放入数组
 8             //读取的真实的长度...
 9             int length = fs.Read(buffer, 0, buffer.Length);
10             //以指定的编码方式将byte数组转换为字符串
11             string content = Encoding.UTF8.GetString(buffer);
12             txtContent.Text = content;
13             //关闭管道
14             fs.Dispose();
15 
16 
17 
18 
19 
20             //1.创建文件流
21             //2.准备字节数组
22             //3.将内容读取到字节数组中
23             //4. 将字节数组以指定编码的方式转换为字符串
24             //5. 关闭文件流...
25 
26 
27 
28 
29         }
30 
31         private void button3_Click(object sender, EventArgs e)
32         {
33             //1. 创建文件流 现在我是要保存  所以文件模式性 create
34             FileStream stream = new FileStream("d:\\2.txt", FileMode.Create);
35            //2. 得到字符串
36             string content = txtContent.Text;
37             //3. 将字符串转换为字节数组 以指定编码将字符串转换为byte数组
38             byte[] buffer = Encoding.UTF8.GetBytes(content);
39             //4. 写入
40             stream.Write(buffer, 0, buffer.Length);
41             //5.关闭文件流
42             stream.Dispose();
43             MessageBox.Show("ok");
44         }

 

以下是自己写的文件的复制、粘贴、剪切、删除程序

View Code
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.IO;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 namespace 文件操作_节点
 13 {
 14     public partial class Form1 : Form
 15     {
 16         static string strr = "";
 17         static string type= "";
 18         //MyStream mySt=new MyStream
 19         public Form1()
 20         {
 21             InitializeComponent();
 22         }
 23 
 24         private void btnAddBase_Click(object sender, EventArgs e)
 25         {
 26             string dic=txtDIC.Text;
 27             tvDIC.Nodes.Add(dic);//返回新增的节点
 28 
 29         }
 30 
 31         private void btnAddChild_Click(object sender, EventArgs e)
 32         {
 33             string dic = txtDIC.Text;
 34             tvDIC.SelectedNode.Nodes.Add(dic);
 35         }
 36 
 37         private void btnAuto_Click(object sender, EventArgs e)
 38         {
 39             string path = @"F:\传智播客培训";
 40             GetNode(path,null,tvDIC);
 41 
 42         }
 43         void GetNode(string path,TreeNode node,TreeView tv)
 44         {
 45             if (node == null)
 46             {
 47                 node = tv.Nodes.Add(Path.GetFileName(path));//返回新增的节点
 48             }
 49             try
 50             {
 51                 string[] patsh = Directory.GetDirectories(path);
 52                 if (patsh.Length > 0)
 53                 {
 54                     foreach (string item in patsh)
 55                     {
 56                         TreeNode newTr = node.Nodes.Add(Path.GetFileName(item));
 57                         //每个 TreeNode对象都有一个Tag属性
 58                         newTr.Tag = item;
 59                         GetNode(item, newTr,tv);
 60                     }
 61                 }
 62             }
 63             catch
 64             {
 65 
 66                 return;
 67  
 68             }
 69  
 70         }
 71 
 72         private void Form1_Load(object sender, EventArgs e)
 73         {
 74             string path = @"F:\测试";
 75             GetNode(path, null, tvDIC);
 76             //GetNode(path, null, tvCopy);
 77             //string[] dirs = Directory.GetLogicalDrives();
 78             //GetNode(dirs[3].ToString(), null,tvAll);
 79             //foreach (var item in dirs)
 80             //{
 81             //    GetNode(item, null);
 82             //}
 83         }
 84 
 85         private void tvDIC_AfterSelect(object sender, TreeViewEventArgs e)
 86         {
 87 
 88             GetAllFiles(tvDIC, lvFile);
 89             
 90 
 91         }
 92 
 93         private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
 94         {
 95 
 96             strr = lvFile.SelectedItems[0].SubItems[1].Text;
 97             type = "copy";
 98 
 99         }
100 
101         private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
102         {
103             switch (type)
104             {
105                 case "copy":
106                     //一种方法是采用File.Copy
107                     //File.Copy(strr, Path.Combine(tvDIC.SelectedNode.Tag.ToString(), Path.GetFileName(strr)));
108                     //一种方法是采用文件里流
109                     MyStream.Wirte(strr, Path.Combine(tvDIC.SelectedNode.Tag.ToString(), Path.GetFileName(strr)));
110                     break;
111                 case "move":
112                     //一种方法是采用File.Move
113                     //File.Move(strr, Path.Combine(tvDIC.SelectedNode.Tag.ToString(), Path.GetFileName(strr)));
114                     //一种方法是采用文件里流
115                     MyStream.Wirte(strr, Path.Combine(tvDIC.SelectedNode.Tag.ToString(), Path.GetFileName(strr)));
116                     File.Delete(strr);
117                     break;
118                 default:
119                     break;
120             }
121                   
122             GetAllFiles(tvDIC, lvFile);            
123         }
124 
125         private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
126         {
127             strr = lvFile.SelectedItems[0].SubItems[1].Text;
128             type = "move";
129         }
130 
131         void GetAllFiles(TreeView tv,ListView lv)
132         {
133             lv.Items.Clear();
134             TreeNode node = tv.SelectedNode;
135             try
136             {
137                 string[] files = Directory.GetFiles(node.Tag.ToString());
138                 foreach (string item in files)
139                 {
140                     ListViewItem lvi = new ListViewItem();
141                     lvi.Text = Path.GetFileName(item);
142                     lvi.SubItems.Add(item);
143                     lv.Items.Add(lvi);
144                 }
145             }
146             catch
147             {
148                 return;
149             }
150  
151         }
152 
153         private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
154         {
155             string str = lvFile.SelectedItems[0].SubItems[1].Text;
156             File.Delete(str);
157             GetAllFiles(tvDIC, lvFile);
158         }
159     }
160     class MyStream
161     {
162         public static void Wirte(string sourceFile, string targetFile)
163         {
164             FileStream fsRead = new FileStream(sourceFile, FileMode.Open);
165             FileStream fsWrite = new FileStream(targetFile, FileMode.Create);
166             int length=0;
167             byte[] buffer = new byte[1024 * 1024];
168 
169             //一点一点去读
170             do
171             {
172                 //返回读到的长度,最大也就是buffer.Length,由于buffer最大是1M,每次最多能读1M的数据,如果读到的数据是满1M的,证明
173                 //这个文件后面可能还有数据,所以还要继续循环下去
174                 length = fsRead.Read(buffer, 0, buffer.Length);
175                 fsWrite.Write(buffer, 0, length);
176 
177             } while (length == buffer.Length);
178             fsRead.Dispose();
179             fsWrite.Dispose();               
180         }
181     }
182 }

 

1、  窗体其实就是一个从Form类继承的1个子类

2、  Partial 类编译的时候会编译成1个类

3、  修改控件的Name属性 其实改的就是对象的名称

4、  在后台要用到的控件一定要改名

 乱码的原因 可能是编码不同

posted on 2012-12-17 23:08  陈谨  阅读(170)  评论(0编辑  收藏  举报