1. 程式人生 > >C#檔案IO操作

C#檔案IO操作

一、檔案系統概述

    計算機系統的重要作用之一是能快速處理大量資訊,因此資料的組織和存取成為一個極為重要的內容。檔案是資訊的一種組織形式,而檔案系統的的目標就是提高儲存器的利用率,接受使用者的委託實施對檔案的操作。

      檔案系統是作業系統的一個重要組成部分。檔案系統所要解決的問題包括:管理儲存設定,決定檔案的存放位置和方式,提供共享能力,保證檔案安全性,提供友好的使用者介面。通過檔案系統,使用者和應用程式能方便地進行資料儲存,而不必關心底層儲存裝置的實現。

     Windows支援多種檔案系統,如FAT,FAT32,NTFS等。這些檔案系統在作業系統內部有不同的實現方式,然而它們提供給使用者的介面是一致的。如果應用程式不涉及到作業系統的具體特性,那麼只要按照標準式來編寫程式碼,生成的應用程式就可以執行在各個檔案系統上,甚至還可以不經改動移植到其他作業系統(比如Unix和Linux)上.NET框架中的IO處理部分就封裝了檔案系統的實現細節,提供給開發人員一個標準化的介面。

     Windows作業系統對檔案系統採用多級目錄結構,並且提供了一組命令用於檔案和目錄管理。可以使用.NET提供的標準方法進行目錄管理、檔案控制和檔案存取等工作,程式代友編譯執行時,.NET框架會自動呼叫相關的系統命令。

     C#將檔案視為一個位元組序列,以流的方式對檔案進行操作。流是位元組序列的製作概念,檔案、輸入/輸出設計、內部時行程式管道以及TCP/IP套接字等都可以視為一個流。.NET對流的概念進行了抽象,為這些不同型別的輸入和輸出提供了統一的檢視,使程式設計師不必去了解作業系統和基礎裝置的具體細節。

二、目錄和檔案

1. 相關列舉型別

a) FileAccess,該列舉型別表示檔案的訪問許可權,可以為以下值。

i. Read---對檔案擁有讀許可權

ii. ReadWrite---對檔案擁有的讀寫許可權

iii. Write---對檔案擁有寫許可權

b) FileAttributes,該列舉型別表示檔案的型別

i. Archive---存檔檔案

ii. Compressed---壓縮檔案

iii. Device---裝置檔案

iv. Directory---目錄

v. Encrypted---加密檔案

vi. Hidden---隱藏檔案

vii. Normal---普通檔案

viii. NOtContentIndexd---無索引檔案

ix. Offline---離線檔案

x. ReadOnly---只讀檔案

xi. ReparsePoint---重分析檔案

xii. SparseFile---稀疏檔案

xiii. System---系統檔案

xiv. Temporary---臨時檔案

列舉值可以按位進行組合使用,比如FileAttributes.System|FileAttributes.ReadOnly表示系統只讀檔案。當然,一些相互排斥的型別是不能進行組合的,比如一個檔案不能既是普通檔案,又是隱藏檔案。

c) FileMode,該列舉型別表示檔案的開啟方式,可以為以下值:

i. Append---以追加的方式開啟檔案,如果檔案存在則移動到檔案末尾,否則建立一個新檔案。

ii. Create---建立並開啟一個檔案,如果檔案已經存在則覆蓋舊檔案。

iii. Open---開啟現有檔案,如果檔案不存在發生異常。

iv. OpenOrCreate---開啟或新建一個檔案,如果檔案存在則開啟它,否則建立並開啟一個新檔案。

v. Truncate---開啟現有檔案,並清空檔案內容。

d) FileShare,該列舉型別表示檔案共享方式,可以為以下值。

i. None---禁止任何形式的共享。

ii. Read---讀共享,開啟檔案後允許其它程序對檔案進行讀寫操作。

iii. ReadWrite---讀寫共享,開啟檔案後允許其它程序對檔案進行讀和寫操作。

iv. Write---寫共享,開啟檔案後允許其它程序對檔案進行寫操作。

e) SeekOrigin,該列舉型別表示檔案的偏移以什麼為準,可以為以下值:

i. Begin---從檔案起始位置計。

ii. Current---從檔案流的當前位置計。

iii. End---從檔案流的末尾位置計。

f) NotifyFilters,該列舉型別用於指定對檔案或目錄哪些屬性的修改進行監視,可以為以下值:

i. Attributes---對屬性的變化進行監視。

ii. CreationTime---對建立時間的變化進行監視。

iii. DirectoryName---對目錄名稱的變化進行監視。

iv. FileName---對檔名稱的變化進行監視。

v. LastAccess---對最後一次訪問時間的變化進行監視。

vi. LastWrite---對最後一次時間的變化進行監視。

vii. Security---對安全設定的變化進行監視。

viii. Size---對大小的變化進行監視。

2. 目錄

使用Directory類提供的目錄管理功能,不僅可以建立、移動和刪除目錄,還可以獲取和設定目錄的相關資訊。

Directory提供的靜態方法有:

Ø Public static DirectoryInfo CreateDirectory(string)---給定路徑名,建立目錄,並返回目錄資訊。

Ø Public static void Delete(string)---給定路徑名,刪除目錄。

Ø Public static void bool Exists(string)----給定路徑名,判斷目錄是否存在。

Ø Public static DateTime GetCreationTime(string)----給定路徑名,獲取目錄建立的日期和時間。

Ø Public static string GetCurrentDirectory()---獲取應用程式的當前工作目錄。

Ø Public static string[] GetDirectory(string)---給定路徑名,獲取目錄中的子目錄列表。

Ø Public static string GetDirectoryRoot(string)---給定路徑名,獲取目錄的卷資訊或要資訊。

Ø Public static string[] GetFile(string)---給定路徑名,獲取目錄中的檔案列表。

Ø Public static string[] GetFileSystemEntries(string)---給定路徑名,獲取目錄中的子目錄和檔案列表。

Ø Public static DateTime GetLastAccessTime(string)---給定路徑名,獲取檔案最近一次訪問的日期和時間。

Ø Public static DateTime GetlastWriteTime(string)---給定路徑名,獲得目錄最近一次修改的日期和時間。

Ø Public static string[] GetLogicalDrivers()---獲得計算機上的邏輯驅動器列表。

Ø Public static DirectoryInfo GetParent(string)---給定路徑名,獲取目錄上層目錄的資訊。

Ø Public static void Move(string,string)---給定源路徑名和目標路徑名,移動目錄。

Ø Public static void SetCreationTime(string,DateTime)---給定路徑名,設定目錄建立的日期和時間。

Ø Public static void SetCreationDirectory(string)---給定路徑名,將目錄設定為應用程式的當前工作目錄。

Ø Public static void SetLastAccessTime(string,DateTime)---給定路徑名,設定目錄最近一次被訪問的日期和時間。

Ø Public static void SetLastWriteTime(string,DateTime)---給定路徑名,設定目錄最近一次被修改的日期和時間。

3. 檔案

a) 檔案基本操作

Ø Public static FileStream Create(string)---給定檔案路徑名,建立檔案,並返回一個FileStream流物件。

Ø Public static StreamWriter CreateText(string)---給定檔案路徑名,以文字的方式建立檔案,並返回一個StreamWriter流物件。

Ø Public static void Copy(string,string)---給定源路徑名和目錄路徑名,考貝檔案。

Ø Public static void Move(string,string)---給定源路徑名和目錄路徑名,移支檔案。

Ø Public static void Delete(string)---給定源路徑名和目錄路徑名,刪除檔案。

Ø Public static void Exists(string)---給定源路徑名和目錄路徑名,判斷檔案是否存在。

b)獲取和設定檔案資訊

Ø Public static FileAttributes GetAttributes(string)------給定源路徑名,獲取檔案的屬性集。

Ø Public static DateTime GetCreationTime(string)---給定檔案路徑名,獲取檔案建立賓日期和時間。

Ø Public static DateTime GetLastAccessTime(string)---給定檔案路徑名,獲得檔案最近一次被訪問的日期和時間。

Ø Public static DateTime GetLastWriteTime(string)---給定檔案路徑名,獲得檔案最近一次被修改的日期和時間。

Ø Public static void SetAttributes(string,FileAttributes)---給定檔案路徑名,設定檔案屬性集。

Ø Public static void SetCreationTime(string,DateTime)---給定檔案路徑名,設定檔案建立的日期和時間。

Ø Public static void SetLastAccessTime(string,DateTime)----給定檔案路徑名,設定檔案最近一次被訪問的日期和時間。

Ø Public static void SetLastWriteTime(string,DateTime)---給定檔案路徑名,設定檔案最後一次被修改的日期和時間。

c)開啟檔案,並將檔案與流物件相關聯

Ø Public static FileStream Open(string,FileMode)---給定檔案路徑名,按指定的方式開啟檔案,並返回一個FileStream流物件。

Ø Public static FileStream OpenRead(string)---給定檔案路徑名,以只讀方式開啟檔案,並返回一個FileStream流物件。

Ø Public static FileStream OpenWrite(string)---給定檔案路徑名,開啟檔案進行讀寫操作,並返回一個FileStream流物件。

Ø Public static StreamReader OpenText(string)---給定檔案路徑名,以文字方式開啟檔案並返回一個FileStream流物件。

Ø Public static StreamWriter AppendText(string)---給定檔案路徑名,以文字方式開啟檔案進行寫操作,並返回一個StreamWriter流物件。

 

相關推薦

C++ 檔案IO操作 讀寫

#include <iostream> #include <iomanip> #include <fstream> #include <stdlib.h> #include <vector> u

C#檔案IO操作

一、檔案系統概述     計算機系統的重要作用之一是能快速處理大量資訊,因此資料的組織和存取成為一個極為重要的內容。檔案是資訊的一種組織形式,而檔案系統的的目標就是提高儲存器的利用率,接受使用者的委託實施對檔案的操作。       檔案系統是作業系統的一個重要組成部分。檔案系

C#:檔案IO操作 FileStream的用法 及 StreamReader 和 StreamWriter的用法

1. FileStream 用法程式碼 static void Main(string[] args) { //memory : 記憶體 //Binary : 二進位制 String path = @"F:\ly\tes

Linux程式設計——檔案 IO操作

   Linux檔案 I\O 介紹     1. Linux系統呼叫     Linux系統呼叫(system call)是指作業系統提供給使用者程式的一組“特殊介面”,使用者程式可以通過這組“特殊”介面來

Linux檔案IO操作

Linux檔案IO操作包括開啟(open),建立(create),讀(read),寫(write) 開啟open int open(const char *path, int oflags); int open(const char *path, int oflag

C檔案基本操作

(1)C中檔案的基本使用方式以及相關說明 檔案使用方式以及意義: “rt”只讀開啟一個文字檔案,只允許讀資料  “wt”只寫開啟或建立一個文字檔案,只允許寫資料 “at”追加開啟一個文字檔案,並在檔案末尾寫資料 “rb只讀開啟一個二進位制檔案,只允許讀資料 “wb”只寫開啟

c# 檔案IO流寫日誌檔案

檔案IO流寫日誌檔案         #region 系統日誌         readonly object _locklogs = new object();         /// <summary>         /// 日誌         //

C++檔案操作

讀取檔案 假如需要按行讀取下列檔案,並且分別通過不同變數讀取路徑以及數字,則可以通過C++流操作 /home/ubuntu/demo.jpg 1 /home/ubuntu/result.jpg 0

Python中的檔案IO操作(讀寫檔案、追加檔案

【注】:下述操作過程是結合多種網路方法,然後自己實踐的結果。寫在這裡,主要目的是加深記憶,也希望能幫助後來者 Python中檔案的讀寫包含三個步驟:開啟檔案,讀/寫檔案,關閉檔案。 檔案開啟之後必

檔案IO操作的最佳實踐

文章概要 已經過去的中介軟體效能挑戰賽,和正在進行中的 第一屆 PolarDB 資料效能大賽 都涉及到了檔案操作,合理地設計架構以及正確地壓榨機器的讀寫效能成了比賽中獲取較好成績的關鍵。正在參賽的我收到了幾位公眾號讀者朋友的反饋,他們大多表達出了這樣的煩惱:“對比賽很感興趣,但不知道怎麼

linux系統程式設計-檔案IO操作

四個主要的系統呼叫函式解釋 open() 函式可以開啟一個已經存在的檔案,也能建立並開啟一個檔案 #include <sys/stat.h> #include <fcntl

檔案io操作

//檔案寫入SD卡操作 public class Main extends Activity { /* Called when the activity is first created.

檔案IO操作大全

一、檔案基本知識 “檔案是指一組相關資料的有序集合”,這個資料集的名稱就是檔名。所有檔案都是通過流的形式進行輸入輸出操作的。流是一個數據位元組的序列。流入程式的流稱為輸入流,流出程式的流稱為輸出流。 流可分為兩大類:文字流和二進位制流 (1)文字劉是一種字元序列,僅包含字元

樹莓派學習筆記——使用檔案IO操作GPIO SysFs方式

0 前言    本文描述如果通過檔案IO sysfs方式控制樹莓派 GPIO埠。通過sysfs方式控制GPIO,先訪問/sys/class/gpio目錄,向export檔案寫入GPIO編號,使得該GPIO的操作介面從核心空間暴露到使用者空間,GPIO的操作介面包括direction和value等,direct

imx6用檔案io操作gpio

要讓linux支援檔案io方式操作gpio,首先驅動必須得支援,也就是說裝置樹上必須先配置好gpio模式,然後參照以上鍊接去實現gpio操作這裡舉例來說:hud專案中(imx6dl平臺),有一個藍芽電源的使能受GPIO1_IO30的控制,所以我們必須得在裝置樹上配置這個pad

C/C++減少IO操作的方法

很多時候,我們需要讀檔案,我看過這類程式碼,在一個do-while迴圈中,一點一點的讀取檔案內容,然後做響應的操作,我感覺,這樣實在太費事,因此,將此類程式碼改正了過來:一次性讀取檔案全部的內容,然後

[IO系統]02 使用者態的檔案IO操作

在工作中,經常會進行檔案建立、更新、刪除等操作,但是作為儲存領域技術人員,我們又對其過程瞭解多少哪。本系列文章將會對檔案操作進行系統的分析和梳理,與大家共同進步。先來了解使用者態的檔案操作的常用函式。1. “緩衝”檔案系統 – 使用者態帶快取(與檔案系統沒有關係)緩衝檔案系統

Linux檔案IO操作常用函式

1.Linux檔案的概念 Linux系統中,一切皆是檔案。無論是鍵盤、滑鼠、顯示屏以及其它裝置,在Linux系統眼中,它們都只是檔案,僅此而已。這就意味著計算機程式可以像使用檔案一樣操控所有的外設。操作檔案(外設)的函式還是比較多的,但是常用的就那麼幾個:open、clos

檔案IO操作程式設計

通過一個簡單的copy程式,完成檔案的複製程式,瞭解基本的檔案I/O檔案讀寫的基本步驟./command file1 file2 把檔案1的內容複製到檔案2如果檔案2不存在則建立-------------------------------------------------

Python的非同步檔案IO操作

前一篇提到了用subprocess進行與應用的stdin和stdout互動,目前還是stdout處理得多。專案有這樣的要求,需要程式碼能過同時在Linux和Windows下用,為防止應用掛起,需要進行非同步IO操作,這樣可通過timeout來處理超時。 麻煩問題又來了:Py