//using System.IO;
//using System.IO.Compression;
private void button1_Click(object sender, EventArgs e)
{
Txt txt = new Txt();
txt.title = textBox1.Text;
txt.detail = textBox2.Text;
//創建存儲的文件流
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fsWrite = new FileStream("txt.bin", FileMode.Create)) {
bf.Serialize(fsWrite, txt);
}
BinaryFormatter binary = new BinaryFormatter();
//創建讀取文件的文件流
using (FileStream fsRead = new FileStream("txt.bin", FileMode.Open))
{
//執行反序列化
object obj = binary.Deserialize(fsRead);
Txt pr = obj as Txt;
//listBox1.Items.Add(pr.title);
}
//文件流的使用方式
string msg = "";
//將字符串轉換成數組
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);
//把一個byte數組轉換爲一個字符串
string newmsg = System.Text.Encoding.UTF8.GetString(bytes);
//流操作的是字節,不能直接操作字符串
//通過fileStream來寫文件
//文件流的使用步驟
FileStream fsWriteStream = new FileStream("first.txt", FileMode.Create, FileAccess.Write);
//使用文件流,執行讀寫操作
string msg2 = "sadkjfkjsaflkjas,三角閥";
byte[] byts = System.Text.Encoding.UTF8.GetBytes(msg2);
//寫
//參數1:將指定的字節數組中的內容寫入到文件
//參數2:參數1數組的偏移量,一般爲0
//參數3:本次文件寫入操作要寫入的字節數
fsWriteStream.Write(byts, 0, byts.Length);
//清空緩衝區,關閉文件流,釋放資源
fsWriteStream.Flush();
fsWriteStream.Close();
fsWriteStream.Dispose();
//通過filestream來讀文件
using (FileStream fsRead = new FileStream("first.txt",FileMode.Open,FileAccess.Read))
{
//使用FileStream文件流讀取文本文件的時候,不需要指定編碼,因爲編碼實在將byte數組轉換
//爲字符串的時候才需要使用編碼。而這裏是直接讀取byte[],所以無需使用編碼
byte[] bytes1 = new byte[fsRead.Length];
fsRead.Read(bytes1,0,bytes1.Length);
//將byte轉換字符串
string msg3 = System.Text.Encoding.UTF8.GetString(bytes1);
}
//大文件拷貝
string source = @"c:\";
string target = @"d:\";
BigFileCopy(source,target);
}
/// <summary>
/// 通過文件流實現將source拷貝到target中
/// </summary>
/// <param name="source"></param>
/// <param name="target"></param>
private static void BigFileCopy(string source,string target) {
//創建一個讀取源文件的文件流
using (FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read)) {
//創建一個寫入源文件的文件流
using (FileStream fsWrite = new FileStream(target,FileMode.Create,FileAccess.Write)) {
//拷貝文件,創建一箇中間緩衝區
byte[] bytes3 = new byte[1024 * 1024 * 5];
//返回值表示本次實際讀取到的字節數
int r = fsRead.Read(bytes3,0,bytes3.Length);
//將讀取到的內容寫入新文件中
while (r > 0) {
//第三個參數是讀取到的字節數,而不是數組長度
fsWrite.Write(bytes3,0,r);
fsRead.Read(bytes3, 0, r);
double d = (fsWrite.Position / (double)fsRead.Length) * 100;
}
}
}
}
//壓縮
private void compressTest() {
//讀取源文件
using (FileStream fsRead = File.OpenRead("1.txt")) {
//寫入新文件的流
using (FileStream fsWrite = File.OpenWrite("yasuo.rar")) {
//創建壓縮流
using (GZipStream zip = new GZipStream(fsWrite,CompressionMode.Compress)) {
byte[] buffer = new byte[1024 * 10];
int r;
while ((r = fsRead.Read(buffer,0,buffer.Length)) > 0) {
zip.Write(buffer,0,r);
}
}
}
}
}
//解壓
private void deCompressTest() {
//讀取壓縮文件
using (FileStream fsRead = File.OpenRead("yssuo.rar")) {
//創建壓縮流
using (GZipStream zip = new GZipStream(fsRead, CompressionMode.Decompress)) {
using (FileStream fsWrite = File.OpenWrite("jieya.txt")) {
byte[] buffer = new byte[1024 * 10];
//解壓讀取
int r;
while ((r = zip.Read(buffer,0,buffer.Length)) > 0) {
//寫入新文件
fsWrite.Write(buffer,0,r);
}
}
}
}
}
private void StreamTest() {
using (StreamReader reader = new StreamReader("1.txt", Encoding.Default)) {
//streamReader是逐行讀取文本文件
//直到文件的末尾,獲取一個值,該值指示當前的流位置是否在流結尾。
while (!reader.EndOfStream) {
reader.ReadLine();
}
string line = null;
while ((line = reader.ReadLine()) != null) {
Console.WriteLine(line);
}
}
using (StreamWriter writer = new StreamWriter("test.txt", true, Encoding.Default)) {
for (int i = 0;i < 100;i++) {
writer.WriteLine(i);
}
}
string directoryPath = @"c:\users\public\reports";
//創建一個文件夾對象
DirectoryInfo directorySelecter = new DirectoryInfo(directoryPath);
//獲取當前文件夾下的所有子文件
foreach (FileInfo fileToCompress in directorySelecter.GetFiles()) {
//對於每個
Compress(fileToCompress);
}
foreach (FileInfo fileToDecompress in directorySelecter.GetFiles("*.gz")) {
DeCompress(fileToDecompress);
}
}
public static void Compress(FileInfo fileToCpmpress) {
//創建一個指向當前文件fileToCompress的文件流
using (FileStream originalFileStream = fileToCpmpress.OpenRead()) {
if ((File.GetAttributes(fileToCpmpress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCpmpress.Extension != ".gz" ){
//創建一個指向新文件的一個文件流
using (FileStream compressFileStream = File.Create(fileToCpmpress.FullName + ".gz")) {
using (GZipStream compressionStream = new GZipStream(compressFileStream, CompressionMode.Compress)) {
//將源文件的文件流直接拷貝到壓縮流中compressionStream
originalFileStream.CopyTo(compressionStream);
Console.WriteLine("compressed{0} from {1} to {2} bytes",
fileToCpmpress.Name,fileToCpmpress.Length.ToString(),compressFileStream.Length.ToString());
}
}
}
}
}
public static void DeCompress(FileInfo fileToCompress) {
}