c# FileStream和StreamWriter用法
2009-08-07 14:11
393 查看
FielStream類操作的是字節和節節數組,而stream類操作的是字符數據。字符數據易於使用,但是有些操作,比如隨機文件訪問(訪問文件中間某點的數據),就必須由FileStream對象執行。
FielStream類維護內部文件指針,該指針指向文件中進行下一次讀寫操作的位置。
FileStream只能處理原始字節(raw byte),處理原去吧字節的功能使用FileStream類可以用於處理任何數據文件。
通過讀取字節數據,FileStream對像可以用於讀取圖像和聲音。代價是FileStream類不能將數據直接讀入字符串
此指針可以修改用Seek方法,它有兩個參數:
第一個參數:規定文件指針以字節為參數的移動距離
第二個參數:規定開始計算的起始位置
byte[] byDataValue = new byte[200];
char[] charDataValue = new char[200];
/// <summary>
/// FilesStream讀取用法
/// </summary>
private void FilesStreamReadFile()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.cs", FileMode.Open);
//文件指針移到文件的135個字節
fsFile.Seek(135, SeekOrigin.Begin);
//將接下來的字節讀到Array中
fsFile.Read(byDataValue, 0, 200);
}
catch (Exception e)
{
throw e;
}
//將字節轉換成字符
Decoder dc = Encoding.UTF8.GetDecoder();
//字節數組轉換成字符數組,便於顯示
dc.GetChars(byDataValue, 0, byDataValue.Length, charDataValue, 0);
}
/// <summary>
/// FilesStream寫入用法
/// </summary>
private void FileStreamWriteFile()
{
FileStream fsFile = new FileStream(@"D:\log.txt", FileMode.Create);
charDataValue="This is test string".ToCharArray();
byDataValue=new byte[charDataValue.Length];
//將字符數組轉換成字節數組
Encoder ec=Encoding.UTF8.GetEncoder();
ec.GetBytes(charDataValue,0,charDataValue.Length,byDataValue,0,true);
//將指針設定起始位置
fsFile.Seek(0,SeekOrigin.Begin);
//寫入文件
fsFile.Write(byDataValue,0,byDataValue.Length);
}
FileStream對象通常會在StreamWriter或StreamReader內使用,並使用它們的方法處理文件。
/// <summary>
/// StreamWriter寫入方法
/// </summary>
private void StreamWriterMetod()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.txt",FileMode.OpenOrCreate);
StreamWriter swWriter = new StreamWriter(fsFile);
//寫入數據
swWriter.WriteLine("Hello Wrold.");
swWriter.WriteLine("It is now {0}", DateTime.Now.ToLongDateString());
swWriter.Close();
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// StreamWriter讀取方法
/// </summary>
private void StreamReaderMetod()
{
string sLine = "";
try
{
FileStream fsFile = new FileStream(@"d:\log.txt", FileMode.Open);
StreamReader srReader = new StreamReader(fsFile);
//讀取文件(讀取大文件時,最好不要用此方法)
sLine = srReader.ReadToEnd();
txbValue.Text = sLine;
srReader.Close();
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// StreamWriter讀取方法2
/// </summary>
private void StreamReaderMetodTwo()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.txt", FileMode.Open);
/*
* 讀取數據最簡單的方法是Read()。此方法將流的下一個字符作為正整數值返回,
* 如果達到了流的結尾處,則返回-1。
*/
StreamReader srReader = new StreamReader(fsFile);
int iChar;
iChar = srReader.Read();
while (iChar != -1)
{
txbValue.Text += (Convert.ToChar(iChar));
iChar = srReader.Read();
}
srReader.Close();
}
catch (Exception e)
{
throw e;
}
}
注:FileMode枚舉成員值在文件存在與不存在時的情況
[align=right]Scott CKT 著[/align]
FielStream類維護內部文件指針,該指針指向文件中進行下一次讀寫操作的位置。
FileStream只能處理原始字節(raw byte),處理原去吧字節的功能使用FileStream類可以用於處理任何數據文件。
通過讀取字節數據,FileStream對像可以用於讀取圖像和聲音。代價是FileStream類不能將數據直接讀入字符串
此指針可以修改用Seek方法,它有兩個參數:
第一個參數:規定文件指針以字節為參數的移動距離
第二個參數:規定開始計算的起始位置
byte[] byDataValue = new byte[200];
char[] charDataValue = new char[200];
/// <summary>
/// FilesStream讀取用法
/// </summary>
private void FilesStreamReadFile()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.cs", FileMode.Open);
//文件指針移到文件的135個字節
fsFile.Seek(135, SeekOrigin.Begin);
//將接下來的字節讀到Array中
fsFile.Read(byDataValue, 0, 200);
}
catch (Exception e)
{
throw e;
}
//將字節轉換成字符
Decoder dc = Encoding.UTF8.GetDecoder();
//字節數組轉換成字符數組,便於顯示
dc.GetChars(byDataValue, 0, byDataValue.Length, charDataValue, 0);
}
/// <summary>
/// FilesStream寫入用法
/// </summary>
private void FileStreamWriteFile()
{
FileStream fsFile = new FileStream(@"D:\log.txt", FileMode.Create);
charDataValue="This is test string".ToCharArray();
byDataValue=new byte[charDataValue.Length];
//將字符數組轉換成字節數組
Encoder ec=Encoding.UTF8.GetEncoder();
ec.GetBytes(charDataValue,0,charDataValue.Length,byDataValue,0,true);
//將指針設定起始位置
fsFile.Seek(0,SeekOrigin.Begin);
//寫入文件
fsFile.Write(byDataValue,0,byDataValue.Length);
}
FileStream對象通常會在StreamWriter或StreamReader內使用,並使用它們的方法處理文件。
/// <summary>
/// StreamWriter寫入方法
/// </summary>
private void StreamWriterMetod()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.txt",FileMode.OpenOrCreate);
StreamWriter swWriter = new StreamWriter(fsFile);
//寫入數據
swWriter.WriteLine("Hello Wrold.");
swWriter.WriteLine("It is now {0}", DateTime.Now.ToLongDateString());
swWriter.Close();
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// StreamWriter讀取方法
/// </summary>
private void StreamReaderMetod()
{
string sLine = "";
try
{
FileStream fsFile = new FileStream(@"d:\log.txt", FileMode.Open);
StreamReader srReader = new StreamReader(fsFile);
//讀取文件(讀取大文件時,最好不要用此方法)
sLine = srReader.ReadToEnd();
txbValue.Text = sLine;
srReader.Close();
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// StreamWriter讀取方法2
/// </summary>
private void StreamReaderMetodTwo()
{
try
{
FileStream fsFile = new FileStream(@"d:\log.txt", FileMode.Open);
/*
* 讀取數據最簡單的方法是Read()。此方法將流的下一個字符作為正整數值返回,
* 如果達到了流的結尾處,則返回-1。
*/
StreamReader srReader = new StreamReader(fsFile);
int iChar;
iChar = srReader.Read();
while (iChar != -1)
{
txbValue.Text += (Convert.ToChar(iChar));
iChar = srReader.Read();
}
srReader.Close();
}
catch (Exception e)
{
throw e;
}
}
注:FileMode枚舉成員值在文件存在與不存在時的情況
成員 | 文件存在時 | 文件不存在時 |
Append | 打開文件,流指向文件的末尾,只能與枚舉FileAcess.Write聯合使用 | 創建一個新文件。只能與枚舉FileAcess.Write聯合使用 |
Create | 刪除該文件,然後創建新文件 | 創建新文件 |
CreateNew | 拋出異常 | 創建新文件 |
Open | 打開現有文件,流指向文件開頭 | 拋出異常 |
OpenOrCreate | 打開文件,流指向文件開頭 | 創建新文件 |
Truhncate | 打開現有文件,清除其內容。流指向文件開頭,保留文件的初始創建日期。 | 拋出異常 |
相关文章推荐
- c# FileStream和StreamWriter用法
- c# FileStream和StreamWriter用法
- c# FileStream和StreamWriter用法
- C# FileStream&StreamWriter
- C# FileStream、StreamWriter、StreamReader读写文件时BOM头问题
- 详情学习C#中System.IO.File类和System.IO.FileInfo类的用法3
- C# FileSystemWatcher用法详解 .
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
- 【C#】System.IO.Stream 中flush的用法
- C# 文件操作之 StreamReader & StreamWriter
- C# SaveFileDialog +FileStream+StreamWriter 创建或者覆盖一个文件,并且写入
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- C# FileStream实现多线程断点续传
- C#FileStream复制大文件
- c#FileStream文件读写(转)
- C# StreamReader/StreamWriter与FileStream用法详解
- c#基础入门(5)——File、FileStream、StreamReader、StreamWriter
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
- C# FileSystemWatcher用法详解 .
- C# SaveFileDialog的用法