码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2014-11-22 11:52:30      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   ar   color   os   使用   sp   

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;
}

 

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

标签:des   style   blog   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/bmbh/p/4111028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!