【中階級】-檔案讀寫

閱讀時間約 7 分鐘
  當我們在使用介面的時候有些狀況需要開啟檔案、讀取檔案或是存取檔案,像是Office軟體、3D建模軟體、影片編輯軟體...各式各樣軟體都會有開啟舊檔、開啟新檔、存取檔案這些一般的檔案處理,我們通常就只是點選一下選單或按鍵就可以做這樣的事情了,但是程式中要如何實現這些功能呢?這就是本篇要跟大家分享的內容唷~

一、圖片檔案讀取、開啟、建立、刪除

1.讀取圖片

  在介面上拉出一個Button、pictureBox。此Button文字為讀取檔案,pictureBox為顯示圖片。要讓pictureBox顯示圖片可以使用絕對路徑或相對路徑:
//絕對路徑
picFile.Image = Image.FromFile("路徑");
//相對路徑
picFile.Image = Image.FromFile(Application.StartupPath + "路徑");
絕對路徑:就是要將完整路徑寫入
相對路徑:
就是把資料放在你的專案底下,也就是你的專案資料夾中的bin//debug下,讀取的時候就會從這裡讀取,那路徑寫的內容就是檔案名稱和檔名,若有資料夾就再往後增加資料夾的路徑。等下可以看實例。先看絕對路徑位置存放在哪兒呢?
相對路徑存取處
將我們想放的資料放到debug後,就可以使用相對路徑來將它開啟啦~這邊我們有使用資料夾因此再用相對路徑時也要把它寫進去喔!!直接看實例:
絕對與相對路徑程式
說明:
1.絕對路徑就使用24 - 25行
2.相對路徑就使用27行(目前我們使用這一行)
絕對與相對路徑介面設計
絕對與相對路徑執行結果
大家可以看到此時圖片並不完整,這下怎麼辦?修改pictureBox屬性找到SizeMode選擇Zoom可以讓圖片在框框內顯示適當大小的圖,就可以完整顯示圖片了
更改pictureBox屬性
更改pictureBox屬性執行結果

2.開啟圖片

第一步先初始化,接下來就看我們要設定什麼樣的條件在增加進去就好,這邊列出較常會用到的語法:
OpenFileDialog file1 = new OpenFileDialog(); //初始化
【開啟對話框以前的設定】
file1.Title = "選擇一張影像圖";  //設定視窗標題,預設「開啟」
//選擇的檔案類型「|」是隔開用途
file1.Filter = "所有檔案(*.*)|*.*";
file1.Filter = "圖片檔案(*.jpg,*.gif,*.bmp,*.png)|*.jpg;*.gif;*.bmp;*.png";
file1.Filter = "所有檔案(*.*) | *.*|圖片檔案(*.jpg,*.gif,*.bmp,*.png)|*.jpg;*.gif;*.bmp;*.png";
file1.InitialDirectory ="C:\\";      //設定開檔案時初始化目錄
file1.RestoreDirectory = true;     //設定是否紀錄上次開檔案的目錄
file1.Multiselect = true;  //設定檔案是否多選
【開啟對話框後可以使用的屬性】
string file1path=file1.FileName;   //取得選擇該檔案的路徑
string file1_Name = Path.GetFileNameWithoutExtension(A); //擷取檔名
string file1_Name_SubName = Path.GetFileName(file1Path); //檔名+附檔名
string file1_FolderPath = Path.GetDirectoryName(file1Path);  //只有目錄資料夾路徑,沒有檔名+附檔名
string file1_RootPath = Path.GetPathRoot(file1Path); //資料根目錄
string file1_Path = Path.GetFullPath(file1Path);  //取得完整路徑
這邊實作結果為:
開啟檔案程式
說明:
1.第39行的判斷式,指的就是判斷是否開啟對話框
2.第42行是在文字方塊顯示路徑
3.第44行是使用pictureBox顯示圖片
開啟檔案執行結果-1
開啟檔案執行結果-2

3.存取圖片

存圖程式
說明:
1.一開始也是先初始化、把想設定的屬性設定好
2.設定檔名(看自己想要設定的名稱為何)
*這邊的file1_Name是在剛剛開啟檔案時去取得原圖檔名,由於這邊會使用到,因此要記得將此變數要宣告在全域變數的地方喔!

3.要先判斷此位址在不在,不在就先建立好
4.最後在存圖(這邊為了方便我們知道是否存取,可以看下面這張圖,用MessageBox.Show來顯示)
存圖程式(存圖顯示存取成功狀況)
存圖執行結果-1
程式中執行完畢後,自己也可以到專案下查看是否真的有存到,代表程式有沒有寫成功。
存圖執行結果-2

4.刪除圖片

這邊只要File.Delete(路徑); 這樣就可以了
刪圖程式11
刪圖程式執行結果-1
刪圖程式執行結果-2

二、文字檔案建立與寫入、讀取

1.文字檔案建立與寫入

  可以先在專案底下先建立一個存文字檔的資料夾,接著介面上可以拉三個按鈕和一個textBox,然而textBox更改屬性可以拉動它的bar,為了之後讀取檔案時文字很多還可以靠捲動來看文字。tt
textBox屬性更改
建立文字檔程式
存檔處先建立資料夾
建立文字檔執行結果-1
建立文字檔執行結果-2
說明:
1.程式內有註解可以對照著看
2.當處理好建立或寫入檔案時,可以再多加MessageBox.show()訊息來提醒我們程式已經完成了(這邊我沒有放進去,但要做這件事的時候要補進去會比較好哦!)
3.可以看到執行完後它會新增文字檔並且將要寫入的內容全部寫進去

2.文字檔案讀取

讀取檔案程式
讀取檔案程式執行結果

三、建立INI檔

.什麼是INI檔案檔?

  在很多大程式當中會有一些設定檔,那這個設定檔就會使用到ini檔來做存取相關內容,那麼這邊就來分享一下INI要怎麼使用吧~

Step1:先建立一個class類別,接著寫入程式(看下面幾張圖)

(類別)INI檔建立-1
(類別)INI檔建立-2
(類別)INI檔建立-程式引用
(類別)INI檔建立程式

Step2:在主程式中,先在全域變數中設定 ini 存取檔案位置。先說寫入的狀況:

(主程式)INI檔程式-1
(主程式)INI檔程式-2
INI檔程式執行結果
說明:
1.這邊寫入有三個參數,也就是引用我們一開始建立的Class類別來做使用,這三個參數我們就當它為標題、小標題、內容
2.第185-187行:當我們的標題、小標題為一樣時,只有內容值不一樣,那麼執行結果是會被覆蓋過去的,最後取得的值就會是最後給予的值
3.第189-190行:當只有標題一樣時,小標題、內容值不一樣,那麼執行結果是不會被覆蓋過去的。
總結:
也就是說當標題、小標題一樣時,後者的內容值就是當參數做設定,所以是會被覆蓋過去的。倘若小標題不一樣時,就會去新增新的參數。因此這樣的規則下,在程式中才會時常使用這種設定檔去設定相關參數。

Step3:讀取INI檔

讀取INI檔程式
讀取INI檔程式執行結果
說明:
1.讀取ini檔時一樣也是寫入三個參數,那這邊就會去讀取INI檔找到相對應的標題、小標題去取出內容值,假若找不到相對應的就會顯示出default值。
檔案讀寫部分就分享到這邊,下次會說Visual Studio的內建SQL的使用囉~
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
21會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
留言0
查看全部
發表第一個留言支持創作者!
橙果杏的沙龍 的其他內容
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
可能包含敏感內容
片名告訴我們或不告訴我們的,比你想得還多。本片台灣譯為<超速性追緝>,或許是「XX追緝令」的刻意誤導,用詞卻精準拿捏了速度之於激情的性幻想,縱然片中完全沒有任何警匪偵緝的橋段,使人腦補若不是法律又會是怎樣的力量「制裁」這樣的禁忌和悖德;中國片名<慾望號快車>,則或許挪用自名片<慾望街車>,強調車子的
Thumbnail
五年多以前我一腳踏入日本社會創新的圈子,大概看了一圈後,發現所有階級都有社群跟安全網,就是中產階級沒有,所以需要解決中產階級問題是當務之急。
Thumbnail
越南經濟成長的表現,世界有目共賭,加上城鎮化的效用,為越南當地創造了不斷擴張的中產階級消費群。而如今,中產階級不僅影響了越南的經濟行為,也為當地帶來嶄新的市容。
Thumbnail
想必大家都受到美股周五的震撼了,而小牛自從週三結算後就一直提醒台股拉高結算後漲幅滿足,週報標示的美股壓力位置也已經到來,周五在大盤正紅時也有在聊天室提醒:數位貨幣ETH以及BTC等等代表投機熱錢的指標均斷頭嚴重破線,所以五花自從周三開始便在大盤紅盤時做空了大盤指數權證與重點半導體權值,周五也是見紅持
Thumbnail
大概在四年多前,我剛任職於日本社會新創組織NCL與地方政府專案聘員時,意識到自己面臨的問題,是一整個階級的問題。中產階級是一個在心態上相對養尊處優的階級,這篇就跟各位聊聊為什麼中產階級需要自救。
Thumbnail
中產階級倡議1:中產階級是個脆弱的階級,現在貧富差距激化,逐漸消失的中產階級們該何去何從?
Thumbnail
布紐爾的電影從頭到尾充滿荒謬的幽默感,明明就在眼前的小女孩,但大家就是看不見,「我在這啊」「等我們問你話你再開口」警官這樣對他們判定失蹤的女孩說;詩人槍手被判死刑後,不但當庭釋放,眾人竟還與他握手致意;醫生對肝癌末期的病人毫不在乎,還問他要不要來根菸...
Thumbnail
儘管「中產階級」造就了一切關於「自我提升」的漂亮話,但我們不僅現在不是中產階級,甚至從來都不是。-P.82 你自認自己是中產階級嗎?你有想過所謂的中產階級定義到底為何?又為什麼現在社會我們人人都想成為中產階級,甚至更多覺得只要能待在中產階級內就心滿意足了?
Thumbnail
對於投資理財的理解愈深,其實大多數都體現在你對於時間看法的轉變。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
可能包含敏感內容
片名告訴我們或不告訴我們的,比你想得還多。本片台灣譯為<超速性追緝>,或許是「XX追緝令」的刻意誤導,用詞卻精準拿捏了速度之於激情的性幻想,縱然片中完全沒有任何警匪偵緝的橋段,使人腦補若不是法律又會是怎樣的力量「制裁」這樣的禁忌和悖德;中國片名<慾望號快車>,則或許挪用自名片<慾望街車>,強調車子的
Thumbnail
五年多以前我一腳踏入日本社會創新的圈子,大概看了一圈後,發現所有階級都有社群跟安全網,就是中產階級沒有,所以需要解決中產階級問題是當務之急。
Thumbnail
越南經濟成長的表現,世界有目共賭,加上城鎮化的效用,為越南當地創造了不斷擴張的中產階級消費群。而如今,中產階級不僅影響了越南的經濟行為,也為當地帶來嶄新的市容。
Thumbnail
想必大家都受到美股周五的震撼了,而小牛自從週三結算後就一直提醒台股拉高結算後漲幅滿足,週報標示的美股壓力位置也已經到來,周五在大盤正紅時也有在聊天室提醒:數位貨幣ETH以及BTC等等代表投機熱錢的指標均斷頭嚴重破線,所以五花自從周三開始便在大盤紅盤時做空了大盤指數權證與重點半導體權值,周五也是見紅持
Thumbnail
大概在四年多前,我剛任職於日本社會新創組織NCL與地方政府專案聘員時,意識到自己面臨的問題,是一整個階級的問題。中產階級是一個在心態上相對養尊處優的階級,這篇就跟各位聊聊為什麼中產階級需要自救。
Thumbnail
中產階級倡議1:中產階級是個脆弱的階級,現在貧富差距激化,逐漸消失的中產階級們該何去何從?
Thumbnail
布紐爾的電影從頭到尾充滿荒謬的幽默感,明明就在眼前的小女孩,但大家就是看不見,「我在這啊」「等我們問你話你再開口」警官這樣對他們判定失蹤的女孩說;詩人槍手被判死刑後,不但當庭釋放,眾人竟還與他握手致意;醫生對肝癌末期的病人毫不在乎,還問他要不要來根菸...
Thumbnail
儘管「中產階級」造就了一切關於「自我提升」的漂亮話,但我們不僅現在不是中產階級,甚至從來都不是。-P.82 你自認自己是中產階級嗎?你有想過所謂的中產階級定義到底為何?又為什麼現在社會我們人人都想成為中產階級,甚至更多覺得只要能待在中產階級內就心滿意足了?
Thumbnail
對於投資理財的理解愈深,其實大多數都體現在你對於時間看法的轉變。