c#文件的操作

来源:http://www.cnblogs.com/tony-brook/archive/2017/11/08/7803191.html
-Advertisement-
Play Games

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() 刪除文件

 

    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Problem Description potato老師雖然很喜歡教書,但是迫於生活壓力,不得不想辦法在業餘時間掙點外快以養家糊口。“做什麼比較掙錢呢?篩沙子沒力氣,看大門又不夠帥...”potato老師很是無奈。“張藝謀比你還難看,現在多有錢呀,聽說還要導演奧運開幕式呢!你為什麼不去娛樂圈發展呢? ...
  • 主要改動部分: /// <summary> /// 6.創建工廠方法模式(抽象工廠:介面) /// </summary> interface IFactory //父介面(父類工廠) { /// <summary> /// 此父介面提供一個無參的函數方法 /// </summary> /// <re ...
  • 目的:1 學習mvc+ef 2 寫下日記也是對自己的督促 第0課 從0開始 ASP.NET MVC開發模式和傳統的WebForm開發模式相比,增加了很多"約定"。 直接講這些 "約定" 會讓人困惑,而且東西太多容易忘記。 和微軟官方教程不同,筆者儘量不用腳手架,從空白框架開始,一步一步添加功能,每次 ...
  • 提取文本的情況在工作和學習中常會遇到,在前面的文章中,已經講述瞭如何提取PPT中文本框里的文本,在本篇文章中,將介紹如何使用C#代碼語言提取PPT文檔中SmartArt和批註中的文本。同樣的,程式裡面需要使用到Spire.PPT for .NET,在編寫代碼前,需先安裝,並添引用dll文件到項目程式 ...
  • 新開一個Web site。沒有使用jQuery,當Insus.NET使用一些驗證控制項時,如RequiredfieldValidator,程式出現下麵錯誤: WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for ...
  • Dapper使用技巧和基礎CRUD 一、使用模型的增刪改查。 2.建立資料庫 3.數據增刪改查 引用比較亂,做了一些測試,順便說說MongoDB.Driver也很好用,下次寫。 備註:傳入參數可以直接用模型,也可以用object new {Name="test",Code="Test"};這是我寫這 ...
  • 問題 由於在初學c#的時候 使用了 線程委托去執行函數,是為了不讓軟體窗體假死。所以使用下方代碼: Thread th = new Thread(Getform); //創建線程 th.Start(); 在使用前需要引入 : using System.Threading; 但是,在Getform 函 ...
  • .NET中的線程池是受CLR管理的,TheadTool類有一個QueueUserWorkItem靜態方法,這個靜態方法接受一個委托,代表用戶自定義的一個非同步操作,在這個方法被調用之後,委托會進入到內部隊列中,如果池中沒有線程,則創建一個工作線程,把第一個委托放入工作線程。如果繼續放入委托,則池創建新... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...