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

1,文件与文件夹的读取(针对Windows )

这是程序员的基本功。
做这种操作首先要引入一个命名空间

using System.IO
I input 输入
O output 输出File.Create("C:\1.txt");
file是个静态类,里面有很多方法,多是基于面向对象而设计的,所以单词好,f12进入代码,自己用。
//上面的创建是不行的对于Windows10,因为安全文件是不随便写入系统硬盘的。
//如果强行写入改变安全权限,但这么做没什么意义。
//可以创建一个文件夹,安全权限改成完全控制。Directory 目录文件夹//这是f盘Youkumoive下所有文件夹string[] a = Directory.GetDirectories(@"F:\Youkumoive", "*", SearchOption.AllDirectories);//Directory 目录以字符串数组返回盘符的路径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,文件的读取与写入

    //创建文件流,没有就创建一个文件,有则打开文件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,二进制文件的写入和读取
类:

  [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一个二进制序列化器BinaryFormatter bf = new BinaryFormatter();//把这个类进行序列化,来写入硬盘Pet p = new Pet("小猪","公","2");bf.Serialize(fs,p);//关流   fs.Close();

反序化如下

 string path = @"E:\Txt\2019 9 20\csdn.border";     //读取这个对象的字段FileStream fs = new FileStream(path,FileMode.OpenOrCreate);BinaryFormatter bf = new BinaryFormatter();//反序列化,返回object类型,所以要转型为pet类Pet p = bf.Deserialize(fs) as Pet;fs.Close();//打印写入硬盘里类的字段Console.WriteLine(p.name + p.sex + p.age);//结果:小猪公2

Conclusion:
序列化的优点:可以把类,或者集合,快速的写入硬盘,不像文本文档xier
要拘泥于格式,和很多代码。
缺点:没有可读性。
作用:把硬盘和泛型集合完美的结合。
注意点:不能对二进制文件做任何的改变,否则计算机识别不了。

.Net 中读取和写入.Xml文件
.Xml 是大多数公司和程序员所承认的小范围的通信协议。其它还有json,文本操作等等。
如html则输入全球标准的通信协议。
.Xml 即一个公司和一个公司协议,以什么形式写入,以什么形式解析文件。

Using System.Xml;XmlDocument doc = new XmlDocument();string path = @"E:\Txt\2019 9 23\users.xml";
//判断是否存在子节点
if (doc.ChildNodes[0].HasChildNodes)
{}
//以下是一个三层结构的.xml文件。//创建xml文件XmlNode node = doc.CreateElement("UserInfo");//根节点userinfodoc.AppendChild(node);//其余节点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下的子节点User.AppendChild(Uid);User.AppendChild(Name);User.AppendChild(Pwd);User.AppendChild(Age);User.AppendChild(Remark);//根节点下的子节点node.AppendChild(User);doc.Save(path);//解析for (int i = 0; i < doc.ChildNodes[0].ChildNodes.Count; i++){//删除一个节点(根节点下的子节点)doc.ChildNodes[0].RemoveChild(ChildNodes[0].ChildNodes[i]);//就是删除一个remark
//打印001              Console.WriteLine(doc.ChildNodes[0].ChildNodes[i].ChildNodes[0].InnerText);
//三个nodes 。最后一个nodes,这个是灵活多变的。但是层数不要太多,不方便读取
//子节点追加在哪里,决定该节点的父子关系。
//xml有且只有一个根节点。即上面的userinfo有且只有一个。}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优秀设计师是如何炼成的,看搜狐如何做设计

《设计之下》终于上市了&#xff0c;回忆一下整个成书的过程&#xff0c;不得不佩服作者&#xff0c;从最开始的干净利落&#xff0c;到最终的细节的调整&#xff0c;作为编辑我对他们的认识逐渐加深&#xff0c;也慢慢了解了优秀设计师是如何炼成的。 这本书源于2012年12月份的…

1092. To Buy or Not to Buy (20)

1092. To Buy or Not to Buy (20) 时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueEva would like to make a string of beads with her favorite colors so she went to a small shop to buy some beads. There were many colorful strings …

.net动态控件的使用(listview ,treeview,tabControl)

对于控件中显示的数据可能是不固定的。如果固定&#xff0c;数据发生了变化&#xff0c;又要重新设计&#xff0c;这样浪费成本&#xff0c;资源。 所以有用代码操作控件&#xff0c;自由度&#xff0c;可控度高。 1&#xff0c;树控件 //把 tv 作为全局变量 &#xff0c; 这是…

泡茶看数据结构-临时(对象设计技术)

一.开场白 第二次《DATA STRUCTURES AND PROBLEM SOVLING WITH C》英文授课&#xff0c;让我产生英文写文章的念头。但是&#xff0c;慢慢开始参合英文吧。一下子写的话&#xff0c;怕写出来博客园首页都不敢收录了。^_^&#xff01;今天&#xff0c;从课堂和自己下午看总结下,…

前端学习(1002):简洁版滑动下拉菜单问题解决

快速滑动 不停切换 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scrip…

js bom and dom

以下的代码只是一些小的例子。我画了一张图来总结js大的结构 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script>//Point 1 delayer and timer (BOM browser Object Model)var delayer;var tim…

leetcode 383 赎金信 C++

自己想的&#xff0c;一个思路两个解法&#xff0c;从字符串中的第一个唯一字符的思路搬过来的 one class Solution { public:bool canConstruct(string ransomNote, string magazine) {int table2[26]{0};for(int i0;i!magazine.length();i){table2[magazine[i]-a];}for(int …

Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类

话接上篇。成功配置好QtLuatoLua后&#xff0c;我们可以实现在Lua脚本中使用各个Qt的类。直接看代码吧。 #include "include/lua.hpp" #include <QWidget> #include <QApplication> #include <QFile> #include <QDebug>static int tolua_new…

1099. Build A Binary Search Tree (30)

1099. Build A Binary Search Tree (30) 时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains o…

mysql列属性auto(mysql笔记四)

常见的的是一个字段不为null存在默认值 没值得时候才去找默认值&#xff0c;可以插入一个null到 可以为null的行里 主键&#xff1a;可以唯一标识某条记录的字段或者字段的集合 主键设置 主键不可为null,声明时自动设置为not null 字段上设置 字段名 primary key定义完字段后 …

详解html结构之间的各个关系,层级关系(以列表为例)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>层级关系查找元素</title></head><body><div id "div">hello<ul id ""><li>li1</li><li>li2</…

css和 js 改变html里面的定位。

css和 js 改变html里面的定位。&#xff08;三种方式&#xff09; <style type"text/css">#div1{border: 1px aquamarine solid;/*固定定位&#xff1a;此元素在整个网页的位置不变,固定某处不动*/position : fixed;left: 20px;top: 10px;}#div2{/*相对定位&am…

unity3d由多个部分组成一个角色

摘自http://forum.unity3d.com/threads/16485-quot-stitch-multiple-body-parts-into-one-character-quot So I have many many models. Each has a skeleton, material, etc. I want to take some of these and combine them into one so I can apply animation commands to …

解决ListView 缓存机制带来的显示不正常问题

ListView加载数据原理:系统绘制ListView时&#xff0c;首先会用getCount&#xff08;&#xff09;函数得到要绘制的这个列表的长度&#xff0c;然后开始逐行绘制。然后调用getView()函数&#xff0c;在这个函数里面首先获得一个View&#xff08;简单item&#xff0c;如字符串或…

windows phone (12) 小试自定义样式

windows phone (12) 小试自定义样式 原文:windows phone (12) 小试自定义样式样式在BS开发中经常用到&#xff0c;在wp中系统也提供了解决办法&#xff0c;就是对设置的样式的一种资源共享&#xff0c;首先是共享资源的位置&#xff0c;它是在App类中&#xff0c;之前我们已经有…

xdoj判断堆栈出栈序列是否有效c++

我在leetcode上写过类似的题&#xff0c;这个代码在xdoj上只能得***50***分&#xff0c;跪求各位大佬挑挑毛病。 #include<stack> #include<iostream> #include<vector> using namespace std; int main(){vector<int>poped;stack<int>s;int n,t;…

ArrayList的remove方法(重写equals方法) 与LinkedList的常用操作

package C12_18;import java.util.ArrayList;public class joy {public static void main(String[] args) {show();//重写equals方法&#xff0c;移除集合里面的元素。public static void show() {ArrayList<dog> al new ArrayList<dog>();al.add(new dog("j…

android学习日记13--数据存储之ContentProvide

3、ContentProvider  数据在Android当中是私有的&#xff0c;当然这些数据包括文件数据和数据库数据以及一些其他类型的数据。ContentProvider实现多应用程序间的数据共享类一般利用ContentProvider为需要共享的数据定义一个URI(统一资源定位符)然后其他程序通过Context获得C…

cin,cin.get(),getline()

我势必扫清我对c的各种疑惑&#xff0c;重拾csdn水文之任 结论&#xff1a;cin在获得需要接受的东西之前&#xff0c;对缓冲区里的空格和换行符不会理睬(但是会把它们从缓冲区删去)&#xff0c;但如果达到了可以结束接受的时候&#xff0c;空格和换行符都会让cin不再接 收,并且…