常規(guī)文件操作

一、獲取本地指定文夾下所有文件名稱和路徑

//DirectoryInfo theFolder = new DirectoryInfo(unzipPath);
//DirectoryInfo[] dirInfo = theFolder.GetDirectories();

//獲取要處理文件夾下的所有文件
private void GetAllFile(string foldPath)
{
    if (foldPath.Length > 0)
    {
        string[] dir = Directory.GetDirectories(foldPath); //文件夾列表  
        DirectoryInfo fdir = new DirectoryInfo(foldPath);
        FileInfo[] file = fdir.GetFiles();
        if (file.Length != 0 || dir.Length != 0) //當前目錄文件或文件夾不為空                  
        {
            foreach (FileInfo f in file) //顯示當前目錄所有文件  
            {
                listFile.Add(f.Name, f.FullName);
            }
            foreach (string d in dir)
            {
                GetAllFile(d);//遞歸  
            }
        }
    }
}

二稼锅、根據(jù)文件完整路徑獲取數(shù)據(jù)

string filePath = "C:\JiYF\BenXH\BenXHCMS.xml";
string str = "獲取文件的全路徑:" + Path.GetFullPath(filePath); //-->C:\JiYF\BenXH\BenXHCMS.xml
str = "獲取文件所在的目錄:" + Path.GetDirectoryName(filePath); //-->C:\JiYF\BenXH
str = "獲取文件的名稱含有后綴:" + Path.GetFileName(filePath); //-->BenXHCMS.xml
str = "獲取文件的名稱沒有后綴:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMS
str = "獲取路徑的后綴擴展名稱:" + Path.GetExtension(filePath); //-->.xml
str = "獲取路徑的根目錄:" + Path.GetPathRoot(filePath); //-->C:
string strTempPath = System.Environment.GetEnvironmentVariable("TEMP");//系統(tǒng)臨時目錄路徑

三狞换、C#中得到程序當前工作目錄和執(zhí)行目錄的五種方法

string str="";
1祷杈、str += "\r\n" + System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;//?獲取模塊的完整路徑诉字。
2孤里、str += "\r\n" + System.Environment.CurrentDirectory;//?獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定目錄黄选。
3蝇摸、str += "\r\n" + System.IO.Directory.GetCurrentDirectory();?//獲取應用程序的當前工作目錄。
4办陷、str += "\r\n" + System.AppDomain.CurrentDomain.BaseDirectory;//獲取程序的基目錄貌夕。確認這種方法在 windows服務中是可以用的
5、str += "\r\n" + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//獲取和設置包括該應用程序的目錄的名稱民镜。
6啡专、str += "\r\n" + System.Windows.Forms.Application.StartupPath;?//獲取啟動了應用程序的可執(zhí)行文件的路徑。效果和2制圈、5一樣们童。只是5返回的字符串后面多了一個""而已
7、str += "\r\n" + System.Windows.Forms.Application.ExecutablePath;//獲取啟動了應用程序的可執(zhí)行文件的路徑及文件名鲸鹦,效果有時和1一樣慧库。
Console.Write(str);
Console.ReadKey();

得到結(jié)果:
1、D:\CPTBSS\Program\CPTCP\bin\Debug\CPTCP.exe
2亥鬓、D:\CPTBSS\Program\CPTCP\bin\Debug
3完沪、D:\CPTBSS\Program\CPTCP\bin\Debug
4、D:\CPTBSS\Program\CPTCP\bin\Debug
5、D:\CPTBSS\Program\CPTCP\bin\Debug
6覆积、D:\CPTBSS\Program\CPTCP\bin\Debug
7听皿、D:\CPTBSS\Program\CPTCP\bin\Debug\CPTCP.exe

四、C#比較兩個文件是否相同:

public static bool isValidFileContent(string filePath1, string filePath2)
{
   //創(chuàng)建一個哈希算法對象
   using (HashAlgorithm hash = HashAlgorithm.Create())
   {
       using (FileStream file1 = new FileStream(filePath1, FileMode.Open),file2=new FileStream(filePath2,FileMode.Open))
       {
           byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根據(jù)文本得到哈希碼的字節(jié)數(shù)組
           byte[] hashByte2 = hash.ComputeHash(file2);
           string str1 = BitConverter.ToString(hashByte1);//將字節(jié)數(shù)組裝換為字符串
           string str2 = BitConverter.ToString(hashByte2);
           return (str1==str2);//比較哈希碼
       }
   }
}

五宽档、C#刪除文件和文件夾

刪除到回收站
首先對項目添加名為Microsoft.VisualBasic.dll的引用尉姨,然后添加命名空間
using Microsoft.VisualBasic.FileIO;
FileSystem.DeleteFile(filepath,UIOption.OnlyErrorDialogs,RecycleOption.SendToRecycleBin)
徹底刪除

/// <param name="directoryPath"> 文件夾路徑 </param>
/// <param name="fileName"> 文件名稱 </param>
public static void DeleteDirectory(string directoryPath, string fileName)
{
    //刪除文件
    for (int i = 0; i < Directory.GetFiles(directoryPath).ToList().Count; i++)
    {
        if (Directory.GetFiles(directoryPath)[i] == fileName)
        {
            File.Delete(fileName);
        }

        //刪除文件夾
        for (int i = 0; i < Directory.GetDirectories(directoryPath).ToList().Count; i++)
        {
            if (Directory.GetDirectories(directoryPath)[i] == fileName)
            {
            Directory.Delete(fileName, true);
            }
        }
    }
}

六、創(chuàng)建文件夾

if (!Directory.Exists(dir))//如果不存在就創(chuàng)建 dir 文件夾
{
Directory.CreateDirectory(dir);
}
打開指定文件夾System.Diagnostics.Process.Start("explorer.exe", newFilePath);

七吗冤、文件屬性操作

去除文件的只讀屬性:System.IO.File.SetAttributes(filePath, System.IO.FileAttributes.Normal);

八又厉、以管理員身份啟動應用程序

//獲得當前登錄的Windows用戶標示
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
//創(chuàng)建Windows用戶主題
Application.EnableVisualStyles();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
//判斷當前登錄用戶是否為管理員

if (!principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
    //創(chuàng)建啟動對象
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    //設置運行文件
    startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
    //設置啟動動作,確保以管理員身份運行
    startInfo.Verb = "runas";
    //如果不是管理員,則啟動UAC
    System.Diagnostics.Process.Start(startInfo);
    //退出
    System.Windows.Forms.Application.Exit();
    return;
}

九椎瘟、文件占用檢測處理

//14位Utc時間戳轉(zhuǎn)日期格式

public DateTime GetDatetime(string strDate)
{
    DateTime strTime = DateTime.Now;
    if (strDate.Length == 14)
    {
        strDate = strDate.Substring(0, 4) + "-" + strDate.Substring(4, 2) + "-" + strDate.Substring(6, 2) + " " + strDate.Substring(8, 2) + ":" + strDate.Substring(10, 2) + ":" + strDate.Substring(12, 2);
        strTime = Convert.ToDateTime(strDate).AddHours(8);
    }
    return strTime;
}

//檢查文件是否被占用

public bool IsFileInUse(string fileName)
{
    bool inUse = true;
    FileStream fs = null;

    if (!File.Exists(fileName))
    {
        inUse = false;
    }
    else
    {

        try
        {
            fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
            inUse = false;
        }
        catch
        {

        }
        finally
        {
            if (fs != null)

                fs.Close();
        }
    }
    return inUse;//true表示正在使用,false沒有使用
}

//檢查應用程序是否被占用

public bool IsAppInUse(string fileName)
{
    Process[] p = System.Diagnostics.Process.GetProcessesByName(fileName);
    if (p.Length > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

//解除應用程序占用

public bool CompleColse(string fileName)
{
    try
    {
        foreach (Process p in System.Diagnostics.Process.GetProcessesByName(fileName))
        {
            p.Kill();
            p.WaitForExit();
        }

        return true;
    }
    catch
    {
        return false;
    }
}

十覆致、Copy一個文件到另一個文件夾下

public static void CopyToFile()
{
    //源文件路徑
    string sourceName = @"D:\Source\Test.txt";

    //目標路徑:項目下的NewTest文件夾,(如果沒有就創(chuàng)建該文件夾)
    string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewTest");
    if (!Directory.Exists(folderPath))
    {
        Directory.CreateDirectory(folderPath);
    }

    //文件不用新的文件名,就用原文件文件名
    string fileName = Path.GetFileName(sourceName);
    ////可以選擇給文件換個新名字
    //string fileName = string.Format("{0}.{1}", "newFileText", "txt");

    //目標整體路徑
    string targetPath = Path.Combine(folderPath, fileName);

    //Copy到新文件下
    FileInfo file = new FileInfo(sourceName);
    if (file.Exists)
    {
        //true 覆蓋已存在的同名文件肺蔚,false不覆蓋
        file.CopyTo(targetPath, true);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載煌妈,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末宣羊,一起剝皮案震驚了整個濱河市璧诵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仇冯,老刑警劉巖之宿,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苛坚,居然都是意外死亡比被,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門炕婶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姐赡,“玉大人,你說我怎么就攤上這事柠掂。” “怎么了依沮?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵涯贞,是天一觀的道長。 經(jīng)常有香客問我危喉,道長宋渔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任辜限,我火速辦了婚禮皇拣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己氧急,他們只是感情好颗胡,可當我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吩坝,像睡著了一般毒姨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钉寝,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天弧呐,我揣著相機與錄音,去河邊找鬼嵌纲。 笑死俘枫,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的逮走。 我是一名探鬼主播崩哩,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼言沐!你這毒婦竟也來了邓嘹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤险胰,失蹤者是張志新(化名)和其女友劉穎汹押,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體起便,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡棚贾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了榆综。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妙痹。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鼻疮,靈堂內(nèi)的尸體忽然破棺而出怯伊,到底是詐尸還是另有隱情,我是刑警寧澤判沟,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布耿芹,位于F島的核電站,受9級特大地震影響挪哄,放射性物質(zhì)發(fā)生泄漏吧秕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一迹炼、第九天 我趴在偏房一處隱蔽的房頂上張望砸彬。 院中可真熱鬧,春花似錦、人聲如沸砂碉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绽淘。三九已至涵防,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沪铭,已是汗流浹背壮池。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杀怠,地道東北人椰憋。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赔退,于是被迫代替她去往敵國和親橙依。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容