fileStream:操作位元組的,也就是所有的文件都可以拿它去操作 / file / path / streamRead / streamWrite(這兩個都是操作字元的,它所操作的都是文本文件) fileStream 與file的區別,fileStream可以操作大文件,因為fileStream是 ...
fileStream:操作位元組的,也就是所有的文件都可以拿它去操作 / file / path / streamRead / streamWrite(這兩個都是操作字元的,它所操作的都是文本文件)
fileStream 與file的區別,fileStream可以操作大文件,因為fileStream是以文件流的形式讀取文件,可以拆開讀取,二file 是一次性讀取。
文件流-à文件(fileStreamàfime):
操作小文件可以用file,而操作大文件就需要用到fileStream
一個簡單的文件流讀取代碼
static void Main(string[] args)
{
string path=@"C:\Users\Administrator\Desktop\奧秘.txt";
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer=new byte[1024*1024*5];
//i代表實際讀取到的位元組
int i = fsRead.Read(buffer, 0, buffer.Length);
string str = Encoding.UTF8.GetString(buffer,0,i);
Console.WriteLine(str);
Console.ReadKey();
}
}
一個關於文件流讀寫的小練習:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.IO; 7 using System.Linq; 8 using System.Text; 9 using System.Threading.Tasks; 10 using System.Windows.Forms; 11 12 namespace fileStream小練習 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 //選擇文件 21 private void button1_Click(object sender, EventArgs e) 22 { 23 //選擇文件的彈窗 24 OpenFileDialog ofd = new OpenFileDialog(); 25 //設置標題 26 ofd.Title = "請選擇文件"; 27 //初始化打開的界面 28 ofd.InitialDirectory = @"C:\Users\Administrator\Desktop"; 29 //多選 30 ofd.Multiselect = true; 31 //文件的類型 32 ofd.Filter = "所有文件|*.*"; 33 ofd.ShowDialog(); 34 this.txtReadPath.Text = ofd.FileName; 35 } 36 //保存文件 37 private void button2_Click(object sender, EventArgs e) 38 { 39 OpenFileDialog ofd = new OpenFileDialog(); 40 ofd.Title = "選擇保存的地址"; 41 ofd.InitialDirectory = @"C:\Users\Administrator\Desktop"; 42 ofd.ShowDialog(); 43 txtSavePath.Text = ofd.FileName; 44 45 } 46 47 private void button3_Click(object sender, EventArgs e) 48 { 49 using (FileStream fsRead = new FileStream(this.txtReadPath.Text.Trim(), FileMode.OpenOrCreate, FileAccess.Read)) 50 { 51 using (FileStream fsWrite = new FileStream(this.txtSavePath.Text.Trim(), FileMode.OpenOrCreate, FileAccess.Write)) 52 { 53 this.progressBar1.Maximum = (int)fsRead.Length; 54 byte[] buffer = new byte[1024 * 1024 * 3]; 55 while (true) 56 { 57 58 //實際讀取的位元組數 59 int r = fsRead.Read(buffer, 0, buffer.Length); 60 61 fsWrite.Write(buffer, 0, r); 62 this.progressBar1.Value = (int)fsWrite.Length; 63 if (r == 0) 64 { 65 MessageBox.Show("上傳成功!"); 66 break; 67 } 68 } 69 } 70 } 71 } 72 } 73 }View Code
註意:File 只能操作小文件,一次性讀取
File類:
File.ReadAllLines(“路徑”,Encoding.Default);//讀取本地txt格式的文件//只能操作文本文件,
什麼時文本文件,放在記事本中不會亂碼的文件,基本都屬於文本文件,常見 的有txt html xml
Encoding.Default是預設的本機的編碼格式
File.ReadAllLines()的預設編碼格式時UTF-8 , 返回的是一個數組,以行為單位
還有一個 File.ReadAllText() 返回一個字元串,將文件一字元串的格式讀取
還有一個叫File.ReadAllBytes()返回一個位元組數組,然後再通過Encoding.Default.GetString(buffer)轉換成字元串.
//以字元數組的方式讀取
//string[] lines = File.ReadAllLines(@"C:\Users\Administrator\Desktop\2017-7-4日筆記.txt",ASCIIEncoding.Default);
//foreach (string item in lines)
//{
// Console.WriteLine(item);
//}
//以字元串的方式讀取
//string str = File.ReadAllText(@"C:\Users\Administrator\Desktop\2017-7-4日筆記.txt", ASCIIEncoding.Default);
//Console.WriteLine(str);
//以位元組數組的方式讀取
//byte[] buffer = File.ReadAllBytes(@"C:\Users\Administrator\Desktop\2017-7-4日筆記.txt");
//將位元組轉換成字元串
//string str = Encoding.Default.GetString(buffer);
//int length = str.Length;
以上時file的讀取的三種方式,下麵介紹三種寫的操作:
File.WriteAllBytes()、File.WriteAll
//文件的寫入
//string str="heheda";
//byte[] buffer = Encoding.Default.GetBytes(str);
//File.WriteAllBytes(@"C:\Users\Administrator\Desktop\qqq.txt", buffer);
第二種方法
String str=”hehe”;
File.WriteAllText(@"C:\Users\Administrator\Desktop\qqq.txt",str);
第三種方法:
string[] arrstr = { "hehe", "xixi", "lili" };
File.WriteAllLines(@"C:\Users\Administrator\Desktop\qqq.txt", arrstr);
編碼格式:概念:將字元串以怎樣的形式保存為二進位。形式就是編碼格式。
最早的編碼格式ASCII美國人的256個
中國最早的編碼:GB2312
香港臺灣GBK
還有個少數民族的GB18030
最後ISO的一個組織出來了,出了一個通用的標準編碼:Unicode
剛開始用的時utf-16
現在用的最多的時utf-8
出現亂碼的原因:我們在保存文件的時候採用的編碼格式與打開這個文件時候的編碼格式不一樣
File 是一個靜態類,介紹幾個常用的方法:
Exists():判斷制定的文件是否存在
Create()創建文件
Move() 剪切(移動)文件
Copy() 複製文件
Delete() 刪除文件