其中創建FileStream對象最簡單的構造函數如下:
FileStream file = new FileStream(fileName,FileMode.Member);// 默認方式,可讀可寫
FileStream file = new FileStream(fileName, FileMode.Member, FileAccess.Member);
而FileAccess的成員:
| 成 員 |
說 明 |
| Read |
打開文件,用於只讀 |
| Write |
打開文件,用於只寫 |
| ReadWrite |
打開文件,用於讀寫 |
對文件進行不是FileAccess枚舉成員指定的操作會導致拋出異常。此屬性的作用是,基於用戶的身份驗證級別改變用戶對文件的訪問權限。
在FileStream構造函數不使用FileAccess枚舉參數的版本中,使用默認值FileAccess. ReadWrite。
FileMode枚舉成員,使用每個值會發生什么,取決於指定的文件名是否表示已有的文件。
| 成 員 |
文 件 存 在 |
文件不存在 |
| Append |
打開文件,流指向文件的末尾,只能與枚舉FileAccess.Write聯合使用 |
創建一個新文件。只能與枚舉FileAccess.Write聯合使用 |
| Create |
刪除該文件,然后創建新文件 |
創建新文件 |
| CreateNew |
拋出異常 |
創建新文件 |
| Open |
打開現有的文件,流指向文件的開頭 |
拋出異常 |
| OpenOrCreate |
打開文件,流指向文件的開頭 |
創建新文件 |
| Truncate |
打開現有文件,清除其內容。流指向文件的開頭,保留文件的初始創建日期 |
拋出異常 |
FileStream類操作的是字節和字節數組,而Stream類操作的是字符數據
StreamWriter允許將字符和字符串寫入文件,它處理底層的轉換,向FileStream對象寫入數據。StreamReader也類似。
實例:
using System;
using System.Data;
using System.IO;
using System.Text;
/// Summary description for FileReadAndWrite
public class FileReadAndWrite
{
public FileReadAndWrite()
{
// TODO: Add constructor logic here
}
/// 用FileStream寫文件
public void FileStreamWriteFile(string str)
{
byte[] byData;
char[] charData;
try
{
FileStream nFile = new FileStream("love.txt", FileMode.Create);
//獲得字符數組
charData = str.ToCharArray();
//初始化字節數組
byData = new byte[charData.Length];
//將字符數組轉換為正確的字節格式
Encoder enc = Encoding.UTF8.GetEncoder();
enc.GetBytes(charData, 0, charData.Length,byData,0,true);
nFile.Seek(0, SeekOrigin.Begin);
nFile.Write(byData, 0, byData.Length);
}
catch (Exception ex)
{
throw ex;
}
}
/// FileStream讀取文件
public string FileStreamReadFile(string filePath)
{
byte[] data = new byte[100];
char[] charData = new char[100];
try
{
FileStream file = new FileStream(filePath, FileMode.Open);
//文件指針指向0位置
file.Seek(0, SeekOrigin.Begin);
//讀入兩百個字節
file.Read(data, 0, 200);
//提取字節數組
Decoder dec = Encoding.UTF8.GetDecoder();
dec.GetChars(data, 0, data.Length, charData, 0);
}
catch (Exception ex)
{
throw ex;
}
return Convert.ToString(charData);
}
/// StreamWriter寫文件
public void StreamWriterWriteFile()
{
try
{
FileStream nFile = new FileStream("love.txt", FileMode.CreateNew);
StreamWriter writer = new StreamWriter(nFile);
writer.WriteLine("I love You!");
writer.WriteLine("Do you love me!");
writer.Close();
}
catch
{ }
}
/// StreamReader讀取文件
public string StreamReaderReadFile()
{
string str="";
try
{
FileStream file = new FileStream("love.txt", FileMode.Open);
StreamReader sr = new StreamReader(file);
while (sr.ReadLine()!=null)
{
str += sr.ReadLine();
}
//或者str = sr.ReadToEnd();
sr.Close();
}
catch
{ }
return str;
}
}
