一、檔案型別
二、外存和記憶體
1.外存:如磁碟(如機械硬碟,固態硬碟[速度快])、磁帶、cd,外存速度慢,掉電保護
2.記憶體,速度快,掉電不保護,速度越快,**越貴
三、檔案的輸入和輸出
1.以記憶體為參照物,流入記憶體,叫做輸入
2.檔名是檔案的唯一標識 唯一指的是全路徑
3.windows下檔名不區分大小寫
4.字尾名:關聯預設開啟它的應用程式,不會改變檔案的內容
5.wma,ape,flac:無損**,很大:20m、30m ,如cd
***:有損** 320 128 64 越高保真度越高
每種**的編碼不一樣,解碼就不一樣
6.ape的字尾名改為txt,怎麼還能正常開啟此**?
在每個檔案的開頭,有個魔術的概念,魔術的作用是檔案的自我介紹
四、網盤
1.儲存非法的檔案,網盤上就找不到它了,因為網盤會窺視你的檔案,從而判斷你的檔案是否合法
2.快取:用在高速裝置和低速裝置的過渡,比如磁碟和記憶體之間
磁碟《--》快取(10m、20m)《--》記憶體《--》cpu快取
3.緩衝:用在流**裡
4.虛擬記憶體:磁碟的一部分,將等待的程序放在磁碟裡,以備替換記憶體裡的程序,速度慢 速度越快,**越貴,生產工藝越難
5.移動裝置的概念
rom:磁碟 平常所說的64g,32g的手機,相當於固態硬碟
ram:記憶體 比如手機記憶體2/4g
五、檔案系統
1.檔案系統:管理檔案的管家
(1)微軟最新的檔案系統:ntfs
(2)windowsxp、優盤的檔案系統:fat32
(3)linux的檔案系統:ext3、ext4
2.檔案系統特點:放得多、高效、安全
高效:檔案系統有好的,也有一般的,檔案系統有快取區,快取:提高了速度
安全:比如某一磁軌、磁碟壞了,其它的還可以用
3.檔案操作易錯點:開啟檔案失敗,原因:檔名錯誤
#include
#include
#include
void filecopy(const char *despath,const char *srcpath)
fclose(fr); //關閉檔案
fclose(fw); }
int main()
fseek
(fp,0l,seek_end);
/*利用fseek函式將指標定位在檔案結尾的位置*/
cnt=
ftell
(fp);
/*利用ftell函式返回指標相對於檔案開頭的位置,以位元組計算*/
printf
(
"檔案所佔的位元組數為%ld個\n"
,cnt);
/*進行輸出*/
}
六、一些小知識
不安全問題:陣列可能越界,如strcpy函式
strcpy_s();//c99,c11建議函式,所以gcc裡沒有這個函式
char *str1 = "abcde";//4b 它是個字串常量,所以不能修改它的值
char str2 = "abcde";//6b 它是個字串陣列
str1 = str2;//這樣str1就不會崩潰了,因為str1是乙個指標,現在讓str1指向str2了,所以就可以修改str1的值了
str1[0] = 'x';
str2[0] = 'x';
要想修改字串的值,一定把它置成陣列
檔案系統 why檔案系統
為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...
檔案系統 檔案系統的架構
vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...
檔案系統 編寫檔案系統
8.5 編寫乙個檔案系統 如果寫乙個實際檔案系統,但是涉及的東西太多,不容易簡明扼要的理解檔案系統的實現。linux核心中提供的romfs檔案系統是個非常理想的例子,既有實際應用架構,也清晰明了,故以romfs為例項分析檔案系統的實現。一 linux檔案系統的實現要素 編寫新檔案系統涉及一些基本物件...