計算機檔案的字尾名是給人看的,還是給計算機識別用的?

時間 2021-05-05 15:28:05

1樓:Soptq

我個人覺得是給人看的。

因為如果只是想讓計算機可以給每個檔案分類的話,完全可以把類別編碼到檔案裡,比如規定檔案開頭的第 n 位到 n+16 位為該檔案的所屬程式類別。

而且很多檔案型別其實本來就在頭資訊中規定了,比如 jpeg 的 FFD8FF,png 的 89504E47,所以就算你改了字尾名,程式開啟的時候還是要再做一次驗證,確定這個程式是我真正打得開還是你騙我打得開。

2樓:IcicleF

從結論上來說,字尾完全是給人看的

當作業系統還處於黑底白字命令列時代的時候,每條指令基本都是長這個樣子:

/path/to/executable param1 param2 ... paramN

你可以看到指令必然是執行某個可執行檔案,它不需要有個字尾;假設我們現在處在Linux環境下,那麼作業系統會自動判斷它是乙個ELF Executable還是shell script。

實際上可執行的檔案是非常少的一部分,常見的txt就是不可執行的;假如你要開啟乙個test.txt,你可能需要執行

vim test.txt

這裡我們執行的是vim而不是test.txt,後者不過是乙個引數字串而已,有沒有字尾對vim來說並沒有什麼特別的影響。

但是,隨著作業系統的發展我們逐漸產生了乙個需求:在看到乙個檔案的時刻區分它是什麼型別。對於vim來說,它也許可以利用這個feature來進行自動語法高亮;但是對於視覺化作業系統來說,這個feature就無比關鍵。

因為在視覺化的作業系統中「開啟檔案」時,我們實際上是執行了一條精簡的指令:

test.txt

本來它是不可執行的,但是作業系統會幫我們去補全前面的那個「vim」。為什麼它補的是vim而不是ssh或者ln甚至是rm呢?靠的就是那個.txt字尾來識別它的型別。

實際上為了區分檔案的型別,我們只需要給每個檔案儲存一段額外的資料就可以了,至於這段資料放在哪是無所謂的。我們也可以在檔案頭新增一段資料來表示它的型別,但這樣會引起很多麻煩(例如,可能需要一套國際標準規定具體的表示規範);另外乙個關鍵的問題是,本來我們做一些基礎的檔案系統操作——比如說列出乙個目錄下的所有檔案——的時候只需要讀檔案元資料,但是為了知道檔案的具體型別,我們還要額外讀取每個檔案的乙個資料塊。這就很不效率了,最好能把檔案型別資訊塞進元資料裡面。

怎麼塞呢?在檔名上加個字尾就是乙個比較聰明的選擇。

3樓:lu luce

非常簡單的問題。

首先假設你使用的是Window作業系統。

在這個作業系統上,副檔名就是告訴作業系統在你雙擊乙個檔案的時候,使用哪乙個應用程式開啟它。

在其他作業系統的命令列中,因為你可以指定應用程式名。副檔名就沒有任何意義。

例如Linux系統下,只要檔案開頭有ELF關鍵字就是應用程式。指令碼的開頭是包含乙個嘆號的指令碼解析器路徑。

其實即使在Window作業系統裡,你用文字編輯器也是可以開啟應用程式的。只不過全是亂碼而已。

4樓:寂靜的夜

。。。這個問題取決於你所使用的作業系統。

在Windows下,字尾名是給作業系統看的

而在Linux下,字尾名是給人看的,Linux不會在意字尾名是什麼,而是根據檔案內容判斷型別。。。

5樓:交流電尼斯

這個分系統。windows上的東西給人看也給電腦看。電腦會根據字尾名幫你選用什麼軟體開啟。

Linux上會有其他的metadata來幫助電腦做這個決定。但其實所有檔案都是1和0就看你怎麼解讀他。就算你把乙個zip改成.

html你丟給乙個解壓軟體強行讓他解壓,他也是可以正確工作的。

6樓:TroubleShooter

Windows作業系統:

既是給人看的,又是給作業系統看的。人可以根據檔案字尾判斷這是個什麼檔案。作業系統也可以根據字尾來採取相應的解析格式(解析方法)來讀取檔案。

改變了原有的檔案字尾,也許程式就執行不成功了。

Linux作業系統:

檔案字尾,就是給人看的。改變檔案字尾,對檔案的讀取沒影響。

7樓:linxdor

linux裡是給人看的,linux下的很多檔案連字尾名都沒有,這些檔案有文字檔案,也有應用程式。

Windows裡是給作業系統看的,Windows會根據檔案字尾名決定開啟的程式,如果你刪掉字尾名,那麼Windows就不知道怎麼開啟了。

8樓:劉da明白

windows系統根據字尾判斷檔案關聯,然後啟動相應程式開啟檔案。

linux根據檔案頭判斷檔案型別,與字尾無關。

所以給人看還是給系統看,在不同作業系統間是有區別的。

9樓:有木桑

對於普通使用者來說,作業系統會選擇隱藏檔案字尾名。

而計算機/軟體其實更需要字尾名來識別檔案具體是啥。

有的人說,計算機只需要讀檔案頭就能正確的開啟檔案了。其實這個說法在很多時候是不正確的。

比如,如何讓計算機通過檔案頭準確的分辨.txt/.html/.

lua/.js/.cs/.

c/.cpp/.css/.

ts/.py/.h/.

ruby/.json/.xml/.

ini/.sln檔案呢

如何讓計算機通過檔案頭分辨.zip/.apk/.ipa檔案呢

10樓:

當今給人看為主。

設計之初估計都有,不過各種常見格式和罕見還好說,問題是諸如dat之類過於通用的名字該怎麼辦,很多軟體對於自己儲存的資料就用副檔名dat,對人來說知道裡面存的資料就行了,但對程式要讀取它的話,就必須校驗儲存的格式是不是自己相容的,所以大多數格式除了對副檔名規定,還會有檔案頭的規定。

副檔名對程式來說,是一道粗篩往往是列檔案列表之類時候用的,然後實際使用的時候再看檔案頭或者其他方式校驗檔案格式之後再讀取。

11樓:大鈾子

字尾名僅僅是約定俗成而已。

如果你自己編寫程式,你可以使用字首名來規定檔案格式,比如text.abcde;或者不使用前字尾,比如TEXTabcde。

只不過,人們習慣用字首名表示檔案的個性化名,字尾名表示檔案的格式化名。

所以,字尾名是寫給人看的。計算機對檔案的前字尾不感興趣。

12樓:TheBadZhang

先是給人看的,再是給機器看的。

遇上了沒有預設開啟程式的檔案你怎麼辦?先看檔案字尾,然後選擇適合的程式。遇到了呢?

只是跳過了給你看得這個步驟,萬一開啟錯了呢,本來想用瀏覽器開啟html檔案,結果給我跳到vscode去了

13樓:

首先,有乙個事實:計算機內部並沒有專門標識檔案型別的儲存區域。字尾名,對於檔案系統來說,也只是檔名的一部分。

有的格式的檔案可能會有檔案頭來標註檔案型別,但是這個檔案頭對於檔案系統來說也只是檔案內容的一部分。

因此,對於作業系統來說,所有的檔案都是一樣的,都是一長串二進位制資訊。作業系統要做的,只是把指定的檔案內容扔給對應的處理程式。至於怎麼處理,扔給誰,它就不知道了。

可是,對於使用者來說,所有檔案都差不多的話,不方便使用。而且,每次使用都要使用者自己指定處理程式,也太麻煩了不是。

就這麼著,字尾名的概念就出現了。windows系統在處理的時候,會從檔名後面開始搜尋,遇到了第乙個點,就把這個點後面的字串拿出來作為檔案字尾名。至於linux系統,人家根本就不處理字尾名。

字尾名只是檔名的一部分。

但是,使用者看字尾名也麻煩,希望有一種更直觀的方式區分檔案,更方便的方式操作檔案。於是,就有了一下的解決方案:

對於windows系統,所有安裝了的應用程式,還有預裝的應用程式,都會將自己可以處理的檔案格式對應的字尾名告訴作業系統,在那裡登記,同時還會通知作業系統為每個格式的檔案分配乙個圖示。這樣,作業系統顯示檔案的時候,會同時顯示出對應的圖示,還有應用程式登記的便於使用者閱讀的檔案格式的說明。在使用者開啟檔案的時候,會首先開啟對應的應用程式,然後把檔案扔給它。

如果有乙個檔案格式被多個應用程式登記,圖示和說明文字會顯示預設的那個,開啟的時候則可通過開啟方式選單手動選擇。

所以,這麼說來,字尾名其實是給使用者看的。但是為了更加方便使用者,作業系統在字尾名的基礎上新增了更多功能,然後給出了隱藏字尾名的選項。

14樓:鳶羽

給作業系統看的。人只看圖示不看字尾的,作業系統(Windows和macOS)根據字尾知道檔案型別然後用關聯程式開啟,並且展示個圖示。Linux 可以不要字尾,但是部分程式需要看字尾。

15樓:林大路

計算機並不是通過檔名,字尾等方式來讀取檔案的

因為檔名可以修改,字尾也可以修改,但是

不管你怎麼改,檔案還是原來的檔案,他並沒有改變

所以在底層上,比如硬碟上,就有個硬碟分割槽表,類似於目錄,用來記錄每個檔案在磁碟的哪些位置。每個檔案會有乙個類似MD5一樣的標籤,這個標籤再繫結檔名,字尾等

便於使用人和其他軟體的快速呼叫

每個檔案都有檔案頭,不同格式的檔案檔案頭是不同的,相同格式的檔案頭肯定是一致的

但是相同格式的檔案頭也有細分,因版本,年代不同而有所差異

比如word的格式有doc,也有docx這種後面的版本

除了檔案頭,當然還有檔案尾。

正因為這兩個特性,當我們硬碟檔案丟失的時候

怎麼找呢?從第乙個扇區開始讀,利用檔案頭和檔案尾用來歸檔檔案

部分檔名是在資料中,然後可以恢復原來的檔名,如果沒有就是亂碼一串,但可以開啟

然後有的檔案不是連續的,那麼麻煩了,這個檔案沒法讀,要想恢復需要更高階的手段

沒事整理下磁碟碎片呢,他有個好處就是把不連續在乙個位置的檔案給弄到乙個位置連續起來。

恢復的時候恢復率會更高

所以字尾可以給人看,人也不一定會看,所以windows多乙個選項可以隱藏字尾

而linux就沒太多字尾的概念

字尾也可以方便系統和軟體給不同的檔案弄乙個特殊的圖示,容易識別

計算機後端是不需要的,前端是需要的,就這麼簡單

16樓:

字尾名的乙個重要作用是區分檔案和資料夾。

假設檔案沒有字尾名,那麼給定乙個路徑/home/user/a/b/c,作為使用者,無從知曉c到底是檔案還是資料夾;若檔案帶有字尾名,如/home/user/a/b/c.bin 則使用者可以輕易判斷出c.bin是檔案。

從這個角度說,字尾名是給人看的。

17樓:tirithsolko

就是給人看的,讓人一眼看出這檔案是幹嘛的。

對計算機來說,它識別檔案看一眼檔案頭和看一眼字尾名,基本沒有區別。

以前用dos是要先記憶一堆命令的。沒有圖形介面,敲個dir可以列出檔案,但沒有字尾你不知道哪個是可執行檔案,這時候只需要dir *.exe ,就能列出可執行程式,當然有時候有些軟體是奇葩到只有com和bat。

現在的電腦沒有使用門檻了,圖形介面下看圖示就知道檔案是幹嘛的。建議把顯示字尾勾上,可以分辨出一些偽裝的惡意程式。

哪些計算機病毒可以傳染給人類,是如何傳染的

gjden 淘苞 主要以女性為感染物件,具有週期性,一般在11月11日會大面積爆發,患者常常在夜深人靜的時候爬起來不停的戳手機。中此毒者,易家庭不和,財產受損。王蜇榮藥 感染範圍廣,傳播速度快,患者中此毒,情緒不穩,時而狂喜時而憤怒,精神萎靡,不願學習工作,易幻想,夜痴夢。柏毒 附著在搜尋引擎中,免...

計算機是如何聊天的?

車小胖 那是因為TCP程序 核心程序 需要等待伺服器程序 使用者程序 完全生成網頁才能發出,這個等待過程有點耗時,而客戶端有可能超時重傳,為了避免這種情況的發生,需要TCP程序立馬確認客戶端,而不能等網頁返回 伺服器生成好 再確認。之所以說以上是乙個理想模型,是因為我們忽略了丟包 超時重傳,還忽略了...

國外的計算機專業 是如何教《計算機組成原理》這門課的?

c rt 新加坡國立大學的話大部分人是大三上,上的是cg3207 computer architecture。感覺教授的講義也是到處搬運的。然後剛開始就講一些相關的state of art然後正課具體的syllable我記不太全就不寫了,主要是四次project,從寫乙個加法器到寫乙個簡單的cpu再...