标签:mem void 文本 delete aci enc ext2 操作 dal
讀寫:
namespace Filetest { class Filetest { static void Main(string[] args) { string path = @"D:\YGTfiletest\filetest.txt"; //文件路徑 try { using (FileStream fs = File.Create(path)) //使用using,定義範圍,在該範圍結束時回收資源,在指定路徑創建文件 { Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file"); //轉換為字節,寫入數據 fs.Write(info, 0, info.Length); //字節數組,字節偏移量,最多寫入的字節數 } using (StreamReader sr = File.OpenText(path)) //打開文件 { string s = ""; while ((s = sr.ReadLine()) != null) //讀取文件內容 { Console.WriteLine(s); } } if (File.Exists(path)) //判斷文件是否存在 { string appendText = "添加內容" + Environment.NewLine; //Environment 是类,NewLine 是字符串属性,用于获取当前环境中定义的回车换行符字符串。相當於\r\n File.WriteAllText(path, appendText); //寫入指定字符串 string readText = File.ReadAllText(path); //打開文本文件,使用指定的編碼讀取文件的所有行 Console.WriteLine(readText); string[] createText = { "A", "B", "C" }; File.WriteAllLines(path, createText); //寫入文件的字符串數組 string readText2 = File.ReadAllText(path); Console.WriteLine(readText2); string[] readText3 = File.ReadAllLines(path); //讀取文件的所有行,返回包含文件所有行的字符串数组。 foreach (string s in readText3) { Console.WriteLine(s); } Console.ReadKey(); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } } } }
2. FileStream 文件流
文件流FileStream 類用於對文件流的操作,與File類單一操作文件方法不同的是,FileStream可以操作字節也就是可以保存任何類型的文件,解決內存問題(操作大的文件)
屬性:
方法:
文件打開模式(FileMode)
namespace stream { class stream { static void Main(string[] args) { //創建FileStream對象,傳入參數文件路徑、打開模式、訪問方式 FileStream fsread = new FileStream(@"D:\YGTfiletest\filestream.txt",FileMode.OpenOrCreate,FileAccess.Read); //字節數組,大小為5M byte[] buffer = new byte[1024 * 1024 * 5]; //返回本次實際讀取到的字節數 int r = fsread.Read(buffer,0,buffer.Length); //Console.WriteLine(r); //Console.ReadKey(); //將buffer字節數組中每個元素解碼城字符串方式 string s = Encoding.Default.GetString(buffer,0,r); //釋放流 fsread.Close(); //釋放流所佔用資源 fsread.Dispose(); Console.WriteLine(s); using (FileStream fsWrite = new FileStream(@"D:\YGTfiletest\filestream.txt", FileMode.OpenOrCreate, FileAccess.Write)) { string str = "aaaa"; byte [] buffe = Encoding.Default.GetBytes(str); fsWrite.Write(buffe,0,buffe.Length); } Console.WriteLine("已寫入"); Console.ReadKey(); } } }
3.MemoryStream內存流(Read、ReadByte、Write 、WriteByte)
namespace ConsoleApplication1 { class MemoryStream1 { static void Main(string[] args) { MemoryStream ms = new MemoryStream(); byte[] buffer = Encoding.UTF8.GetBytes("ABCDEFG");//字節數組 ms.Write(buffer,0,7); //從緩沖區讀取數據寫入流中 byte[] result = ms.GetBuffer(); //返回寫入內存流的源流數據 string turnStr = Encoding.UTF8.GetString(result); //將字節數組轉換成字符串 Console.WriteLine(turnStr); ms.Seek(0,SeekOrigin.Begin);//將流的當前位置設置為開始的位置 int i = ms.ReadByte();//讀取一個字節,如果達到流的末尾則-1,返回字節的ASCII碼 Console.WriteLine("流的當前位置",i.ToString()); byte[] result1 = ms.ToArray();// 流返回一個字節數組,緩衝區,類似GetBuffer foreach(var item in result1) { Console.Write(item.ToString() + "-"); } MemoryStream ms2 = new MemoryStream(); byte[] buffer2 = Encoding.UTF8.GetBytes("漢字占三個字節"); ms2.Write(buffer2,0,buffer2.Length);//數據源,索引,長度 Console.WriteLine("\n"+ms2.Position);//position 可以理解為指針,寫完數據后在最後一位 int j = ms2.ReadByte();//索引position 在最後一位,所以返回的值為-1,表示在最後 Console.WriteLine("寫入數據后當前指針指向的值:{0}",j.ToString()); ms2.Position = 0; int k = ms2.ReadByte(); Console.WriteLine("改變指針后的值:{0}",k.ToString()); Console.ReadKey(); } } } 輸出結果 ABCDEFG 流的當前位置 65-66-67-68-69-70-71- 21 寫入數據后當前指針指向的值:-1 改變指針后的值:230
4. Stream Writer(Writer、 WriterLine)
class Program { static void Main(string[] args) { FileStream aFile = new FileStream(@"D:\YGTfiletest\streamwriter.txt", FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(aFile); sw.WriteLine("換行"); //WriteLine()方法寫入傳遞給它的字符串,后跟有換行 sw.WriteLine("換行"); sw.Write("不會換行");//Write()方法只是把傳送給他的字符串寫入文件,不追加換行符 sw.Write("不會換行"); sw.Close(); } }
标签:mem void 文本 delete aci enc ext2 操作 dal
原文地址:https://www.cnblogs.com/ygtup/p/9359247.html