如何讀寫文件
//創建文件流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 += "http://" + 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類的實例方法。
新聞熱點
疑難解答