日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

.net中的硬盘操作(针对Windows )

發(fā)布時間:2023/12/10 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net中的硬盘操作(针对Windows ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,文件與文件夾的讀取(針對Windows )

這是程序員的基本功。
做這種操作首先要引入一個命名空間

using System.IO I input 輸入 O output 輸出File.Create("C:\1.txt"); file是個靜態(tài)類,里面有很多方法,多是基于面向?qū)ο蠖O(shè)計(jì)的,所以單詞好,f12進(jìn)入代碼,自己用。 //上面的創(chuàng)建是不行的對于Windows10,因?yàn)榘踩募遣浑S便寫入系統(tǒng)硬盤的。 //如果強(qiáng)行寫入改變安全權(quán)限,但這么做沒什么意義。 //可以創(chuàng)建一個文件夾,安全權(quán)限改成完全控制。Directory 目錄文件夾//這是f盤Youkumoive下所有文件夾string[] a = Directory.GetDirectories(@"F:\Youkumoive", "*", SearchOption.AllDirectories);//Directory 目錄以字符串?dāng)?shù)組返回盤符的路徑foreach (var item in a){Console.WriteLine(item);}//F:\classic moive下的文件,只是這個目錄下的string[] files = Directory.GetFiles(@"F:\classic moive");foreach (var item in files){Console.WriteLine(item);}//directory 的升級版 directoryinfo,可以得到文件或文件夾的更多信息//普通類DirectoryInfo dir = new DirectoryInfo(@"F:\classic moive");FileInfo[] files1 = dir.GetFiles();foreach (var item in files1){Console.WriteLine(item.Name);//只得到該文件夾下的文件名}DirectoryInfo[] info = dir.GetDirectories();//得到文件夾的信息

2,文件的讀取與寫入

//創(chuàng)建文件流,沒有就創(chuàng)建一個文件,有則打開文件FileStream fs = new FileStream(@"E:\Txt\1.txt", FileMode.OpenOrCreate);//寫入文件的工具StreamWriter sw = new StreamWriter(fs);sw.WriteLine("Hello World!");sw.Close();fs.Close();//讀取文件StreamReader sr = new StreamReader(@"E:\Txt\1.txt");//批量讀取文件string str = sr.ReadToEnd();sr.Close();fs.Close();Console.WriteLine(str);string path = @"E:\Txt\work.txt";FileStream fs1 = new FileStream(path, FileMode.OpenOrCreate);StreamReader sr1 = new StreamReader(fs1);//逐行讀取string str1;while (!sr1.EndOfStream){str1 = sr1.ReadLine();Console.WriteLine(str1);}fs1.Close();

3,二進(jìn)制文件的寫入和讀取
類:

[Serializable]//必須在類前聲明這個類是可序列化的class Pet{public string name, sex, age;public Pet(){ }public Pet(string name,string sex,string age){this.name = name;this.sex = sex;this.age = age;}}

序列化如下:

string path = @"E:\Txt\2019 9 20\csdn.border"; FileStream fs = new FileStream(path,FileMode.OpenOrCreate);//new一個二進(jìn)制序列化器BinaryFormatter bf = new BinaryFormatter();//把這個類進(jìn)行序列化,來寫入硬盤Pet p = new Pet("小豬","公","2");bf.Serialize(fs,p);//關(guān)流 fs.Close();

反序化如下

string path = @"E:\Txt\2019 9 20\csdn.border"; //讀取這個對象的字段FileStream fs = new FileStream(path,FileMode.OpenOrCreate);BinaryFormatter bf = new BinaryFormatter();//反序列化,返回object類型,所以要轉(zhuǎn)型為pet類Pet p = bf.Deserialize(fs) as Pet;fs.Close();//打印寫入硬盤里類的字段Console.WriteLine(p.name + p.sex + p.age);//結(jié)果:小豬公2

Conclusion:
序列化的優(yōu)點(diǎn):可以把類,或者集合,快速的寫入硬盤,不像文本文檔xier
要拘泥于格式,和很多代碼。
缺點(diǎn):沒有可讀性。
作用:把硬盤和泛型集合完美的結(jié)合。
注意點(diǎn):不能對二進(jìn)制文件做任何的改變,否則計(jì)算機(jī)識別不了。

.Net 中讀取和寫入.Xml文件
.Xml 是大多數(shù)公司和程序員所承認(rèn)的小范圍的通信協(xié)議。其它還有json,文本操作等等。
如html則輸入全球標(biāo)準(zhǔn)的通信協(xié)議。
.Xml 即一個公司和一個公司協(xié)議,以什么形式寫入,以什么形式解析文件。

Using System.Xml;XmlDocument doc = new XmlDocument();string path = @"E:\Txt\2019 9 23\users.xml"; //判斷是否存在子節(jié)點(diǎn) if (doc.ChildNodes[0].HasChildNodes) {} //以下是一個三層結(jié)構(gòu)的.xml文件。//創(chuàng)建xml文件XmlNode node = doc.CreateElement("UserInfo");//根節(jié)點(diǎn)userinfodoc.AppendChild(node);//其余節(jié)點(diǎn)XmlNode User = doc.CreateElement("User");XmlNode Uid = doc.CreateElement("Uid");XmlNode Name = doc.CreateElement("Name");XmlNode Pwd = doc.CreateElement("Pwd");XmlNode Age = doc.CreateElement("age");XmlNode Remark = doc.CreateElement("Remark");Uid.InnerText = "001";Name.InnerText = "Admin";Pwd.InnerText = "123";Age.InnerText = "20";Remark.InnerText = "我是一個管理員";//user下的子節(jié)點(diǎn)User.AppendChild(Uid);User.AppendChild(Name);User.AppendChild(Pwd);User.AppendChild(Age);User.AppendChild(Remark);//根節(jié)點(diǎn)下的子節(jié)點(diǎn)node.AppendChild(User);doc.Save(path);//解析for (int i = 0; i < doc.ChildNodes[0].ChildNodes.Count; i++){//刪除一個節(jié)點(diǎn)(根節(jié)點(diǎn)下的子節(jié)點(diǎn))doc.ChildNodes[0].RemoveChild(ChildNodes[0].ChildNodes[i]);//就是刪除一個remark //打印001 Console.WriteLine(doc.ChildNodes[0].ChildNodes[i].ChildNodes[0].InnerText); //三個nodes 。最后一個nodes,這個是靈活多變的。但是層數(shù)不要太多,不方便讀取 //子節(jié)點(diǎn)追加在哪里,決定該節(jié)點(diǎn)的父子關(guān)系。 //xml有且只有一個根節(jié)點(diǎn)。即上面的userinfo有且只有一個。}

總結(jié)

以上是生活随笔為你收集整理的.net中的硬盘操作(针对Windows )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。