C#学习笔记 --文件和注册表操作

System.MarshalByRefObject --这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据。

FileSystemInfo --这是表示任何文件系统对象的基类

FileInfo和File --这些类表示文件系统上的文件

DirectoryInfo和Directory --这些类表示文件系统上的文件夹

Path --这个类包含的静态成员可以用于处理路径名

DriveInfo --它的属性和方法提供了指定驱动器的信息

Directory类和File类只包含静态方法,不能被实例化

File.Copy(@"C:\Program Files\My Program\ReadMe.txt".@"D:\Copies\ReadMe.txt");

DirectoryInfo类和FileInfo类实现与Directory类和File类大致相同的公共方法,需要实例化

FileInfo myFile = new FileInfo(@"C:\Program Files\My Program\ReadMe.txt");
myFile.CopyTo(@"D:\Copies\ReadMe.txt");

Path类不能实例化

移动和删除文件或文件夹可以使用FileInfo和DirectoryInfo类的MoveTo()和DeleteTo()方法来完成

File和Directory类这两个对应方法是Move()和Delete()。

FileInfo和File类分别实现CopyTo()和Copy()方法

File.ReadAllText() 读取文件

File.ReadAllText(FilePath);

File.WriteAllText()

File.WriteAllText(FilePath,Contents);
//指定新文件的编码格式
File.WriteAllText(FilePath,Contents,Encoding);

文件的读写,最常用的类如下:

FileStream(文件流)--这个类主要用于在二进制文件中读写二进制数据--也可以使用它读写任何文件

StreamReader(流读取器)和StreamWriter(流写入器)--这两个类专门用于读写文本文件

构造FileStream实例,需要4条信息:

要访问的文件

表示如何打开文件的模式--FileMode

表示访问文件的方式--是只读、只写还是读写--FileAccess

共享访问--表示是否独占访问文件--FileShare

FileStream fs3 = new FileStream(@"C:\C# Projects\Project3.doc",FileMode.Create,FileAccess.Write,FileShare.None);

FileInfo myFile4 = new FileInfo(@"C:\C# Projects\Project4.doc");
FileStream fs4 = myFile4.OpenRead();
FileInfo myFile5 = new FileInfo(@"C:\C# Projects\Project5doc");
FileStream fs5 = myFile5.OpenWrite();
FileInfo myFile6 = new FileInfo(@"C"\C# Projects\Project6doc");
FileStream fs6 = myFile6.Open(FileMode.Append,FileAccess.Write,FileShare.None);
FileInfo myFile7 = new FileInfo(@"C:\C# Projects\Project7.doc");
FileStream fs7 = myFile7.Create();
//关闭流
fs.Close();

int NextByte = fs.ReadByte();
int nBytesRead = fs.Read(ByteArray,0,nBytes);

byte NextByte = 100;
fs.WriteByte(NextByte);

fs.Write(ByteArray,0,nBytes);

StreamReader只能执行读取操作

StreamReader sr = new StreamReader(@"C:\My Documents\ReadMe.txt",Encoding.UTF8);

FileStream fs = new FileStream(@"C:\My Documents\ReadMe.txt",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);

FileInfo myFile = new FileInfo(@"C:\My Documents\ReadMe.txt");
StreamReader sr = myFile.OpenText();

string nextLine = sr.ReadLine();
string restOfStream = sr.ReadToEnd();
int nextChar = sr.Read();

int nChars = 100;
char[] charArray = new char[nChars];
int nCharsRead = sr.Read(charArray,0,nChars);

StreamWriter只能用于写入文件

StreamWriter sw = new StreamWriter(@"C:\My Documents\ReadMe.txt",true,Encoding.ASCII);

FileStream fs = new FileStream(@"C:\My Documents\ReadMe.txt",FileMode.CreateNew,FileAccess.Write,FileShare.Read);
StreamWriter sw = new StreamWriter(fs);

FileInfo myFile = new FileInfo(@"C:\My Documents\NewFile.txt");
StreamWriter sw = myFile.CreateText();

sw.Close()

string nextLine = "Groovy Line";
sw.Write(nextLine);

char[] charArray = new char[100];
sw.Write(charArray);

文件的安全性

从文件中读取ACL

从目录中读取ACL

添加和删除文件中的ACL项

读写注册表

注册表项可以格式化为3个数据类型:

REZ_SZ

REG_DWORD

RED_BINARY

访问注册表,Microsoft.Win32名称空间中的两个类Registry和RegistryKey

Registry类通过静态属性来提供这些实例,这些属性有7个,分别是ClassesRoot、CurrentConfig、CurrentUser、DynData、LocalMachine、PerformanceDate和Users

如果要实例化一个RegistryKey对象,唯一的方式就是从Registry类的对应静态属性开始,向下浏览

以下方式只读访问

RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft");

以下读写访问

RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft",true);

创建一个键,使用CreateSubKey()方法

RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMicrosoft = hkSoftware.CreateSubKey("MyOwnSoftware");

使用SetValue()和GetValue()方法设置或获取该键中的数据

SetValue()方法根据所提供的类的类型,确定把值设置为REG_SZ、REG_DWORD,还是REG_BINARY

RegistryKey hkMine = HkSoftware.CreateSubKey("MyOwnSoftware");
hkMine.SetValue("MyStringValue","Hello World");
hkMine.SetValue("MyIntValue",20);

RegistryKey.GetValue()方法返回一个对象引用

string stringValue = (string)hkMine.GetValue("MyStringValue");
int intValue = (int)hkMine.GetValue("MyIntValue");
//关闭该键
hkMine.Close();

读写独立存储器

可以轻松地存储应用程序状态或用户设置

SaveSettings()方法

using System.IO;
using System.IO.IsolatedStorage;
using System.Text

void SaveSettings()
{
    IsolatedStorageFile storFile = IsolatedStorageFile.GetUserStoreForDomain();
    IsolatedStorageFileStream storStream = new IsolatedStorageFileStream
("SelfPlacingWindow.xml",FileMode.Create,FileAccess.Write);
    System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(storeStream,Encoding.UTF8);
    writer.WriteStartDocument();
    writer.WriteStartElement("Settings");
    writer.WriteStartElement("BackColor");
    writer.WriteValue(BackColor.ToKnownColor().ToString());
    writer.WriteEndElement();

    writer.WriteStartElement("Red");
    writer.WriteValue(BackColor.R);
    writer.WriteEndElement();

    writer.WriteStartElement("Green");
    writer.WriteValue(BackColor.G);
    writer.WriteEndElement();

    writer.WriteStartElement("Blue");
    writer.WriteValue(BackColor.B);
    writer.WriteEndElement();

    writer.WriteStartElement("Width");
    writer.WriteValue(Width);
    writer.WriteEndElement();

    writer.WriteStartElement("Height");
    writer.WriteValue(Height);
    writer.WriteEndElement();

    writer.WriteStartElement("X");
    writer.WriteValue(DesktopLocation.X);
    writer.WriteEndElement();

    writer.WriteStartElement("Y");
    writer.WriteValue(DesktopLocation.Y);
    writer.WriteEndElement();

    writer.WriteStartElement("WindowState");
    writer.WriteValue(WindowState.ToString());
    writer.WriteEndElement();

    writer.WriteEndElement();

    writer.Flush();
    writer.Close();

    storStream.Close();
    storFile.Close();
}

从存储器中读取数据通过ReadSettings()方法实现

bool ReadSettings()
{
    IsolatedStorageFile storFile = IsolatedStorageFile.GetUserStoreForDomain();
    string[] userFiles = storFile.GetFileNames("SelfPlacingWindow.xml");

    foreach(string userFile in userFiles)
    {
        if(userFile == "SelfPlacingWindow.xml")
        {
            listBoxMessages.Items.Add("Successfully opened file" + userFile.ToString());
            StreamReader storStream = new StreamReader(new IsolatedStorageFileStream
("SelfPlacingWindow.xml",FileMode.Open,StorFile));
            System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(storStream);

            int redComponent = 0;
            int greenComponent = 0;
            int blueComponent = 0;

            int X = 0;
            int Y = 0;

            while(reader.Read())
            {
                switch(reader.Name)
                {
                    case "Red"
                        redComponent = int.Parse(reader.ReadString());
                        break;
                    case "Green"
                        greenComponent = int.Parse(reader.ReadString());
                        break;
                    case "Blue"
                        blueComponent = int.Parse(reader.ReadString());
                        break;
                    case "X"
                        X = int.Parse(reader.ReadString());
                        break;
                    case "Y"
                        Y = int.Parse(reader.ReadString());
                        break;
                    case "Red"
                        redComponent = int.Parse(reader.ReadString());
                        break;
                    case "Width"
                        this.Width = int.Parse(reader.ReadString());
                        break;
                    case "Height"
                        this.Height= int.Parse(reader.ReadString());
                        break;
                    case "WindowState"
                        this.WindowState= (FormWindowState)FormWindowState.Parse
(WindowState.GetType(),reader.ReadString()));
                        break;
                    default:
                        break;
                }
            }
            this.BackColor = Color.FromArgb(redComponent,greenComponent,blueComponent);
            this.DesktopLocation = new Point(X,Y);

            listBoxMessages.Items.Add("Background color:"+BackColor.Name);
            listBoxMessages.Items.Add("Desktop location:" + DesktopLocation.ToString());
            listBoxMessages.Items.Add("Size:" + new Size(Width,Height).ToString());

            storStream.Close();
            storFile.Close();
        }
    }
    return true;
}
时间: 2024-08-09 02:03:29

C#学习笔记 --文件和注册表操作的相关文章

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

Ch25 文件和注册表操作(2)-- 读写文件

老早之前就有一个想法,写一个小程序,可以读取文档,可以查找替换关键字,其实也是很简单的,正好最近看到文件系统这章,今天下午没事也就做了一个,这里总结一下: 1.用StreamReader读取文本文件,编码用Encoding.Default. StreamReader sr = new StreamReader(filePath,Encoding.Default); rtbContent.Text = sr.ReadToEnd(); sr.Close(); //释放锁定资源 2.统计要查找的字符,

Ch25 文件和注册表操作(1)--文件系统

1.文件系统操作,相关的累在 System.IO命名空间中,而注册表操作由System.Win32命名空间中的类执行. 2.System.Runtime.Serialization都与串行化有关,串行化是把一些数据(如文档的内容)转化为字节流并存储在某个地方的过程. 3.FileSystemInfo---表示任何文件系统对象的基类 4.FileInfo和File---表示文件系统上的文件 5.DirectoryInfo和Directory---表示文件系统上的文件夹 只需要执行一次时,用File

【读书笔记】C#高级编程 第二十四章 文件和注册表操作

(一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByRefObject--这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据. FileSystemInfo--这是表示任何文件系统对象的基类. FileInfo和File--这些类表示文件系统上的文件. DirectoryInfo和Directory--这些类表示文件系统上的文件夹.

《C#高级编程》读书笔记(十六):文件和注册表操作

1,Directory类和File类 只包含静态方法,不能被实例化.只要调用一个成员方法,提供合适文件系统对象的路径,就可以使用这些类.如果只对文件夹或文件执行一个操作,使用这些类就很有效,因为这样可以省去实例化.NET类的系统开销. File.Copy(@"C:\1.txt",@"D:\copy.txt"); 2,DirectoryInfo类和FileInfo类 这两个类实现与Directory类和File大致相同的公共方法,并拥有一些公共属性和公共函数,但他们都

Hibernate学习笔记(一)-->数据库单表操作

Hibernate框架是一个全ORM映射框架,是一个非常流行的数据库操作框架之一,现在比较流行的还有MyBatis半ORM映射框架 在MyEclipse IDE开发工具中,可以很轻松的搭建Hibernate框架. 一.搭建一个项目 1.首先在MyEclipse中搭建一个web项目. 2.选中项目右键-->myeclipse-->Project Facets-->找到hibernate.这样就为项目添加了hibernate支持 3.打开hibernate.cfg.xml配置文件,在可视化编

取消svn关联文件的注册表操作

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Cancel SVN connection"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] @="cmd.exe /c \"TITLE Removing SVN Folders i

EasyARM i.mx28学习笔记——文件IO方式操作GPIO

0 前言 本文描述如果通过文件IO sysfs方式控制EasyARM GPIO端口.通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入. Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来. [相关博文] [EasyARM

QSettings配置读写-win注册表操作-ini文件读写

版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http://techieliang.com/2017/12/674/ 文章目录 1. 介绍 2. 创建配置文件  2.1. 配置格式  2.2. 作用域  2.3. 关于组织.程序名 3. 配置文件读写 4. 范例  4.1. win下SystemScope.IniFormat  4.2. win下UserSc