首先,我們開啟vs2013,新建乙個窗體應用程式如圖:
需求:我們要實現這樣的功能,點選文字框,然後彈出檔案對話方塊,讓我們選擇檔案,然後點選確定之後,讀取指定檔案的內容,隨後我們將讀取到的資料,寫入文字中。
檔案讀寫原理:前面,我們在學習檔案讀寫原理的時候,已經知道,硬碟的資料和記憶體之間的關係,在磁碟中,我們將資料讀取成二進位制的資料,存放到byte陣列中,然後在記憶體中,我們需要將byte陣列轉化為原始的文字資料。
然後看下截圖的**:
我們通過openfiledialog類,來建立乙個對話方塊。通過其實例物件的showdialog方法,來顯示對話方塊,這個方法的返回值是dialogresult型別。圖中的**意思是:當我們開啟對話方塊,點選確定之後,顯示所選的檔案的全路徑。
**這樣寫,通過filenames也可以達到一樣的效果:看圖:
現在我們已經達到了這樣的效果,顯示了檔案的路徑,然後現在我們要點選讀取按鈕,把所選的檔案檔案,資料讀取到另乙個檔案中。
我們測試的文字是:
可以看到這個文字是293個位元組:(在**中,我們建立陣列的時候,怎麼知道建立的多大的呢??)
這裡有個技巧:
先讀取傳過來的文字的路徑,在檔案流中的length屬性就標誌了,我們需要讀取的檔案的大小。我們就可以知道要建立的陣列的大小了。
所有的**:
using注意;這個例子需要執行成功之後,需要將程式停止,才可以看到檔案檔案中讀取到的資料,filestream的快取作用。。system;
using
system.collections.generic;
using
system.componentmodel;
using
system.data;
using
system.drawing;
using
system.io;
using
system.linq;
using
system.text;
using
system.threading.tasks;
using
system.windows.forms;
namespace
filereaddemo
private
void txtpath_click(object
sender, eventargs e)
}private
void btnread_click(object
sender, eventargs e)}}
下面來優化一下**:
上面的**,只能執行一次,因為檔案流沒有被釋放:
usingsystem;
using
system.collections.generic;
using
system.componentmodel;
using
system.data;
using
system.drawing;
using
system.io;
using
system.linq;
using
system.text;
using
system.threading.tasks;
using
system.windows.forms;
namespace
filereaddemo
private
void txtpath_click(object
sender, eventargs e)
}private
void btnread_click(object
sender, eventargs e)}}}
}
第乙個Authorware例子
對於flash和authorware兩個軟體,開始的時候自認為flash的作品短小精悍,有利於網路傳播,所以關注的比較多 但是現在發現authorware對於課件製作方面有獨特的優勢 方便!下面是乙個authorware製作時鐘的例子 1 調整視窗 resizewindow 300,300 2 畫表...
第乙個入門例子
1 配置thinkphp 2 嘗試控制器和檢視 1 資料庫 在開始之前,我們首先在資料庫thinkphp中建立乙個think data資料表 以mysql資料庫為例 create table if not exists think data id int 8 unsigned not null au...
第乙個sparkstream例子
用 toc 來生成目錄 第乙個sparkstream例子 在這個例子中,程式從監聽tcp套接字的資料伺服器獲取文字資料,然後計算文字中包含的單詞數。做法如下 首先,我們匯入spark streaming的相關類以及一些從streamingcontext獲得的隱式轉換到我們的環境中,為我們所需的其他類...