C#文件操作基礎之File類和FileInfo類

文件和I/O流的差異:


文件是一些具有永久存儲及特定順序的字節組成的一個有序的、具有名稱的集合。
因此對于文件,我們經常想到文件夾路徑,磁盤存儲,文件和文件夾名等方面。
I/O流提供一種后備存儲寫入字節和從后備存儲讀取字節的方式。
后備存儲能夠為多種存儲媒介之中的一個。


System.IO命名空間中的經常使用類:


BinaryReader ? ? 用特定的編碼將基元數據類型讀作二進制值
BinaryWriter ? ? 以二進制形式將基元類型寫入流,并支持用特定的編碼寫入字符串
Directory ? ? ? ?公開用于創建、移動和枚舉通過文件夾和子文件夾的靜態方法,無法被繼 ? ? ? ? ? ? ? ? ?承
DirectoryInfo ? ?公開用于創建、移動和枚舉文件夾和子文件夾的實例方法,無法被繼承
File ? ? ? ? ? ? 提供創建、復制、刪除、移動和打開文件的靜態方法,協助創建 ? ? ? ? ? ? ? ? ? ? ?FileStream對象
FileInfo ? ? ? ? 提供創建、復制、刪除、移動和打開文件的實例方法,而且幫助創建 ? ? ? ? ? ? ? ? ?FileStream對象
FileStream ? ? ? 公開以文件為主的Stream,既支持同步讀寫操作,也支持異步讀寫操 ? ? ? ? ? ? ? ? ?作
FileSystemInfo ? 為FileInfo和DirectoryInfo對象提供基類
StreamReader ? ? 實現一個TextReader,使其以一種特定的編碼從字節流中讀取字符
StreamWriter ? ? 實現一個TextWriter,使其以一種特定的編碼向流中寫入字符






1.File類:


Copy ? ? ? ? ? ? ? ? ?將現有文件拷貝到新文件

Create ? ? ? ? ? ? ? ?在指定路徑中創建文件
Delete ? ? ? ? ? ? ? ?刪除指定的文件,假設指定的文件不存在,則不引起異常
Exists ? ? ? ? ? ? ? ?確定指定的文件是否存在
Move ? ? ? ? ? ? ? ? ?將指定文件移到新位置,并提供指定新文件名稱的選項
Open ? ? ? ? ? ? ? ? ?打開指定路徑上的FileStream
GetCreationTime ? ? ? 返回指定文件或文件夾的創建日期和時間
OpenRead ? ? ? ? ? ? ?打開現有文件進行讀取
OpenText ? ? ? ? ? ? ?打開現有UTF-8編碼文本文件以進行讀取
OpenWrite ? ? ? ? ? ? 打開現有文件進行寫入




2.FileInfo類:

Directory ? ? ? 獲取父文件夾的實例

Exists ? ? ? ? ?獲取指示文件是否存在的值

FullName ? ? ? ?獲取文件夾或文件的完整文件夾

Length ? ? ? ? ?獲取當前文件的大小

Name ? ? ? ? ? ?獲取文件名稱



3.File類和FileInfo類的基本操作方法


注意:

因為File類中的全部方法都是靜態的,所以假設僅僅想運行一個操作,那么使用File類中方法的效率比使用對應的FileInfo類中的方法可能更高


File類中的方法都是靜態方法,在使用時須要對全部方法都運行安全檢查。因此假設打算多次重用某個對象,可考慮改用FileInfo類中的對應方法,由于不總是須要安全檢查。




(1)推斷文件是否存在Exists方法


返回bool型,假設path為空或者沒有權限,則返回false

File:推斷C盤根文件夾下有沒有test.txt文件:

File.Exists("C:\\test.txt")


FileInfo:

FileInfo fileinfo = new FileInfo("C:\\test.txt")

if(fileinfo.Exists){}




(2)創建文件用Create方法


File類的Create方法有4中重載方法:

public static FileStream Create(string path)

public static FileStream Create(string path,int bufferSize)

public static FileStream Create(string path,int bufferSize,FileOptions options)

public static FileStream Create(string path,int bufferSize,FileOptions options,FileSecurity fileSecurity)


File類Create方法參數說明

path ? ? ? ? ? ? ? 文件名稱

bufferSize ? ? ? ? 用于讀取和寫入文件的已放入緩沖區的字節數

options ? ? ? ? ? ?FileOptions值之中的一個,它描寫敘述怎樣創建或改寫該文件

fileSecurity ? ? ? FileSecurity值之中的一個,它確定文件的訪問控制和審核安全性


File類

File.Create("C:\\test.txt")


FileInfo類:

FileInfo fileinfo = new FileInfo("C:\\test.txt")

fileinfo.Create();




(3)拷貝文件用File類的Copy方法以及FileInfo類的CopyTo方法


File類的Copy方法或者FileInfo類的CopyTo方法

File類的Copy方法有兩種重載方式

public static void Copy(string sourceFileName,string destFileName)

public static void Copy(string sourceFileName,string destFileName,bool overwrite)

sourceFileName表示要復制的文件,destFileName表示目標文件的名稱,不能是文件夾,假設是第一種重載,則目標文件參數不能是現有文件

overwrite表示能否夠改寫目標文件


將C盤根文件夾下的test.txt文本文件拷貝到D盤根文件夾下:

(這邊注意措辭,說明D盤根文件夾下是沒有test.txt文件的)

File.Copy("C:\\test.txt","D:\\test.txt")


FileInfo類的CopyTo方法也有兩種重載方式

public FileInfo CopyTo(string destFileName)

public FileInfo CopyTo(string destFileName,bool overwrite)


FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.CopyTo("D:\\test.txt",true);




(4)移動文件用File類的Move方法和FileInfo類的MoveTo方法


File類-Move方法-

public static?void?Move(string sourceFileName,string destFileName)

File.Move("C:\\test.txt","D:\\test.txt")


FileInfo類-MoveTo方法-publicvoid?MoveTo(string destFileName)

FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.MoveTo("D:\\test.txt");




(5)刪除文件用Delete方法


File類-Delete方法-public staticvoid?Delete(string path)

File.Delete("C:\\test.txt")


FileInfo類-Delete方法-publicvoid?Delete(string path)

FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.Delete("D:\\test.txt");


轉載于:https://www.cnblogs.com/zfyouxi/p/4261539.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273419.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

poj 2051 Argus(優先隊列)

題目鏈接: http://poj.org/problem?id2051 思路分析: 優先級問題,使用優先隊列求解;當執行某個任務后,再增加一個任務到隊列中, 該任務的優先級為執行任務的時間加上其時間間隔,如此反復直到求出前K個執行任務。 代碼&#xff1a…

Mybatis 算術邏輯運算

第一種方法&#xff1a; 用了轉義字符把>和<替換掉&#xff0c;然后就沒有問題了。 SELECT * FROM test WHERE 1 1 AND start_date < CURRENT_DATE AND end_date > CURRENT_DATE 附&#xff1a;XML轉義字符 < …

c++ STL deque容器成員函數

deque是雙向隊列&#xff0c;即可以在頭部插入刪除&#xff0c;也可以在尾部插入刪除。內部并不連續&#xff0c;這一點和vector并不一樣。可能第1個元素和第2個元素的地址是不連在一起的。在使用時用it迭代器會安全一點。 這是c 98標準的&#xff0c;不是c11的。11標準新加的函…

sqlserver中判斷表或臨時表是否存在

轉自&#xff1a;http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1、判斷數據表是否存在 方法一&#xff1a; use yourdb;go if object_id(Ntablename,NU) is not nullprint 存在else print 不存在 例如&#xff1a;use fireweb;go if object_id(NTEMP_TBL,NU)…

Mysql數據庫正則表達式

1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名稱含有1000的所有行 SELECT * FROM a1 WHERE name regexp .000 #匹配以000結尾的所有行&#xff0c;(.正則中表示&#xff1a;匹配任意一個字符) 從中可以看到正則表達式能夠模擬LIKE使用通配符&#xff0c…

android項目 之 記事本(6)----- 加入手寫

想必大家都用過QQ的白板功能&#xff0c;里面主要有兩項&#xff0c;一個是涂鴉功能&#xff0c;事實上類似于上節的畫板功能&#xff0c;而還有一個就是手寫&#xff0c;那記事本怎么能沒有這個功能呢&#xff0c;今天就來為我們的記事本加入手寫功能。 先上圖&#xff0c;看看…

HTTP協議中常見請求方法以及一些常見錯誤代碼

GET&#xff1a; 請求指定的頁面信息&#xff0c;并返回實體主體。 HEAD&#xff1a; 只請求頁面的首部。 POST&#xff1a; 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。 PUT&#xff1a; 從客戶端向服務器傳送的數據取代指定的文檔的內容。 DELETE&#xff…

license文件生成原理

byte解密weblogic加密oraclehex現在很多J2EE應用都采用一個license文件來授權系統的使用&#xff0c;特別是在系統購買的早期&#xff0c;會提供有限制的license文件對系統進行限制&#xff0c;比如試用版有譬如IP、日期、最大用戶數量的限制等。 而license控制的方法又有很…

linux常用關機命令及其區別-Shutdown halt reboot init

1.shutdown shutdown命令安全地將系統關機。 shutdown 參數說明: [-t] 在改變到其它runlevel之前﹐告訴init多久以后關機。 [-r] 重啟計算器。 [-k] 并不真正關機﹐只是送警告信號給每位登錄者〔login〕。 [-h] 關機后關閉電源〔halt〕。 [-n] 不用init﹐而是自己來關機。不鼓…

CSS3動畫@keyframes中translate和scale混用出錯問題

在寫基于網頁的2048時&#xff0c;想讓一個元素出現時已經通過translate屬性固定在指定位置&#xff0c;同時顯示動畫scale(0)-->scale(1)&#xff0c;以實現放大出現效果。 CSS代碼為 -webkit-keyframes mymove_failed{0% {-webkit-transform:translate(50px,50px) scale…

metero學習

博客園首頁新隨筆聯系訂閱管理最新隨筆 最新評論 node.js相關的中文文檔及教程 (轉) Posted on 2013-08-30 10:40 小小清清 閱讀(61) 評論(0) 編輯 收藏 node.js api中英文對照: http://docs.cnodejs.net/cman/ node.js入門中文版: http://nodebeginner.org/index-zh-cn.html e…

Linux統計單個文件統計

語法&#xff1a;wc [選項] 文件… 說明&#xff1a;該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符串。 該命令各選項含義如下&#xff1a; - c 統計字節數…

jQuery慢慢啃之事件對象(十一)

1.event.currentTarget//在事件冒泡階段中的當前DOM元素 $("p").click(function(event) {alert( event.currentTarget this ); // true }); 2.event.data//當前執行的處理器被綁定的時候&#xff0c;包含可選的數據傳遞給jQuery.fn.bind。 $("a").ea…

Linuxcurl命令參數詳解

Linuxcurl是通過url語法在命令行下上傳或下載文件的工具軟件&#xff0c;它支持http,https,ftp,ftps,telnet等多種協議&#xff0c;常被用來抓取網頁和監控Web服務器狀態。1.linuxcurl抓取網頁&#xff1a;抓取百度&#xff1a;curlhttp://www.baidu.com如發現亂碼&#xff0c;…

android解析XML總結(SAX、Pull、Dom三種方式)

在android開發中&#xff0c;經常用到去解析xml文件&#xff0c;常見的解析xml的方式有一下三種&#xff1a;SAX、Pull、Dom解析方式。 今天解析的xml示例&#xff08;channels.xml&#xff09;如下&#xff1a; 1 <?xml version"1.0" encoding"utf-8"…

查看Eclipse中的jar包的源代碼:jd-gui.exe

前面搞了很久的使用JAD&#xff0c;各種下載插件&#xff0c;最后配置好了&#xff0c;還是不能用&#xff0c;不知道怎么回事&#xff0c; 想起一起用過的jd-gui.exe這個工具&#xff0c;是各種強大啊&#xff01;&#xff01;&#xff01; 只需要把jar包直接扔進去就可以了&a…

maven scope含義的說明

compile &#xff08;編譯范圍&#xff09; compile是默認的范圍&#xff1b;如果沒有提供一個范圍&#xff0c;那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath 中可用&#xff0c;同時它們也會被打包。 provided &#xff08;已提供范圍&#xff09; provided 依…

此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因,Firefox 取消了該請求...

FirFox打開80以外的端口&#xff0c;會彈出以下提示&#xff1a; “此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因&#xff0c;Firefox 取消了該請求。”。 解決方法如下&#xff1a; 在Firefox地址欄輸入about:config,然后在右鍵新建一個字符串鍵network.securit…

Java操作shell腳本

public class Exec {private static ILogger logger LoggerFactory.getLogger(Exec.class);public Exec() {super();}/*** 執行命令&#xff08;如Shell腳本&#xff09;<br>* * param cmd 操作命令* param timeout 超時時間* return 命令執行過程輸出內容* * throws IO…

Mysql更新插入

在向表中插入數據的時候&#xff0c;經常遇到這樣的情況&#xff1a;1. 首先判斷數據是否存在&#xff1b; 2. 如果不存在&#xff0c;則插入&#xff1b;3.如果存在&#xff0c;則更新。 在 SQL Server 中可以這樣處理&#xff1a; if not exists (select 1 from t where id …