【Day 9】為什麼我的檔案打不開?原來是副檔名在作怪!

為什麼我的檔案打不開?原來是副檔名在作怪!

為什麼我的檔案打不開?原來是副檔名在作怪

「不知道大家有沒有用過『即時通』呢?這裡說的可不是現在常用的 Line、WhatsApp、Messenger,而是更早期的即時通訊軟體——像 Yahoo! 即時通、MSN 這些曾經風靡一時的工具。」

即時通(圖源網路)

忘記從哪一年開始,Yahoo! 即時通跟 MSN 這類即時通訊軟體開始流行起來,基本上你只要持有一個 Yahoo 或 MSN 帳號,就可以和全世界的朋友即時聯絡。

某一天,我收到我同學的即時通私人訊息…

「叮咚~~~」即時通發出的聲音。

「ㄟ!Ray,你有空嗎?我想麻煩你幫我改一下作業。」那天我在網咖打遊戲,玩得正起勁時,同學的即時通小視窗突然跳了出來,結果整個遊戲畫面瞬間被切回桌面。

「X!」我忍不住在大喊著,因為當時正在激烈廝殺(打槍戰遊戲)。

你們可以想像一下,正要補最後一槍或者打 LoL 英雄聯盟團戰時,畫面突然跳到桌面上,你當下不會爆氣嗎?

「等等幫你看啦!我在打 CS 啦!」我超級不爽的回覆著。

「打屁打!先幫我改作業!」同學很神速的回覆我訊息。

(叮咚!叮咚!叮咚!)

不得不說,那時候的即時通真的很煩。只要有訊息進來就會叮咚響一聲,對話視窗還會跳出來把整個畫面遮住。想不被打擾的唯一方法,就是直接把即時通登出。

「好啦!改什麼啦!」要不是我剛好打完,我真的會想要直接噴髒話給他。

「昨天電腦課老師說要把 Word 某一段文字改間鉅,但是我電腦改不了,想請你幫我改!」同學說著。

「喔好~改成xx行對嗎?」其實改個行距花不了多少時間,所以我就答應了。

「對!」同學超神速回覆我訊息,順便把檔案傳給我。

接收到檔案後,我才發現這檔案根本打不開,點擊後總是出現以下畫面:

選擇您想要用來開啟的程式(圖源網路)

檔案格式我已經記不得了,只記得網咖電腦限制很多,連 Microsoft Word 這類軟體都不能裝。

副檔名的由來

接下來要說明一下,為什麼前面會遇到檔案打不開的問題,這就得從『副檔名』開始講起。

副檔名(File Extension)是指檔案名稱後面,用來標示這個檔案類型的字串,通常會由一個英文句點(.)開頭,然後接著一個或多個字母組成。

例如…

  • example.txt:這是一個文字檔案,副檔名是 .txt
  • example.jpg:這是一個圖片檔案,副檔名是 .jpg
  • example.bat:這是一個批次檔案,副檔名是 .bat
  • example.docx:這是一個 Word 檔案,副檔名是 .docx(早期是 .doc)。
  • example.xlsx:這是一個 Excel 檔案,副檔名是 .xlsx

簡單來講,副檔名就是在告訴作業系統「這是什麼類型的檔案」,這樣作業系統才會知道要用什麼程式來打開這個檔案。

通常來講副檔名有以下規則:

  • 副檔名通常由 1 到 4 個字母不等組成,像是 .txt.jpg.exe 等等。
  • 副檔名通常是小寫字母,但有些作業系統會區分大小寫,所以在某些情況下,副檔名可能會是大寫字母,例如 .JPG
  • 副檔名通常是由一個句點(.)開頭,然後接著一個或多個字母組成,例如 example.txt
  • 如果沒有副檔名,作業系統則會將此檔案視為「未知類型」,這樣的檔案通常無法直接打開,除非你知道這個檔案的格式。

「但我的電腦看不到副檔名啊!」你可能會這樣問。

這是因為大部分的作業系統都會隱藏副檔名,這樣做的原因是為了避免使用者誤刪除或改變副檔名,而導致檔案無法打開,如果你想要手動打開的話,可以參考以下的方式:

  • Windows:在檔案總管中,點選「檢視」選單,然後勾選「副檔名」。
  • Mac:在 Finder 中,點選「Finder」選單,然後選擇「設定」,接著在「進階」中勾選「顯示所有檔案名稱副檔名」。

那麼這邊也簡單附上一張副檔名對照表,讓你可以參考一下:

類型 副檔名範例 說明
文件檔案 .doc, .docx, .pdf, .txt Word、PDF、純文字
圖片檔案 .jpg, .png, .gif, .svg 各種圖片格式
音訊檔案 .mp3, .wav, .flac 音樂檔案,如流行歌曲、錄音檔
影片檔案 .mp4, .avi, .mov, .mkv 影片檔案,如電影、短片
可執行檔案 .exe, .bat, 執行程式、批次檔
壓縮檔案 .zip, .rar, .7z 壓縮打包的檔案

但這邊有件事情要特別說明一下…

「副檔名並不等於檔案的內容」

也就是說,副檔名只是用來告訴作業系統這個檔案是什麼類型的檔案,而並不代表這個檔案的內容。

舉個例子,你可以把一個 example.txt 檔案改成 example.jpg,接著再點它,作業系統就會嘗試用圖片程式開啟。雖然最後一定會發生錯誤,但這並不代表檔案內容真的變成了圖片。」

所以如果有人跟你說:

「顯示副檔名可以提升安全性」

其實是在跟你說…

「顯示副檔名可以讓你知道這個檔案的類型,讓你決定要不要打開這個檔案」

只是通常我們看到副檔名為 .exe.bat 等這類檔案時,我們會特別小心,因為裡面可能包含「惡意程式碼」。

Note
什麼是「惡意程式碼」?簡單來講就是會對你的電腦造成傷害的程式碼,像是病毒、木馬、勒索病毒等等。

在早期,也常見一種惡意手法,叫做『雙副檔名攻擊』。比方說example.jpg.exe,它真正的副檔名是 .exe,但名稱裡卻刻意放了 .jpg,讓人誤以為這是一張圖片,其實點開後跑的卻是可執行檔。」

這邊也分享一個小故事。在早期的 DOS 時代,檔案命名有很嚴格的限制:檔名最多 8 個字母、副檔名最多 3 個字母,這種規則被稱為 8.3 命名規則,也就是「檔名 8 字元 + 副檔名 3 字元」。不過隨著系統演進,這種限制早就成為歷史,現在的檔案名稱最長可以到 255 個字元,連副檔名也能長達 255 個字元,再也不受 8.3 規則綁住了。

這邊提醒大家一件事,也是很多人常有的誤解:以為只要改副檔名,就能改變檔案格式。其實這觀念是錯的,改副檔名只是改了檔案名稱而已,結果只會讓系統用錯的程式去打開,卻完全不會改變檔案的內容喔~

該如何找出正確的檔案格式

最後這邊來分享幾招如何找出正確的檔案格式吧?

舉例來說,你原本有個檔案叫 example.jpg,結果被朋友惡作劇改成了 example,等你過一陣子再回來看,根本不知道它原本是什麼格式,只能硬著頭皮用『猜的』來開。

如果你今天使用的是 Mac 的話,你可以使用 file 指令來查看這個檔案的格式,例如:

1
file example

這樣就會顯示出這個檔案的格式,例如:

1
example: JPEG image data, Exif standard: [TIFF image data, big-endian, direntries=11, manufacturer=Apple, model=iPhone 12 Pro Max, orientation=upper-left, xresolution=170, yresolution=178, resolutionunit=2, software=17.0.3, datetime=2024:01:15 17:09:51, hostcomputer=iPhone 12 Pro Max], baseline, precision 8, 4032x3024, components 3

重點就在於 JPEG image data,這樣就可以知道這是一個 JPEG 圖片檔案。

如果你使用的是 Windows 的話,你可以將它用 記事本 打開,然後查看檔案的內容,通常在檔案的開頭會有一些特定的字元,例如…

1
2
3
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>248</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>

我們就可以看到這是一個 JPEG 圖片檔案,但這招只局限於很小的檔案,如果檔案太大的話就無法使用。

所以這邊會建議你使用 Git Bash 並輸入以下指令來查看這個檔案的格式:

1
file example

那麼,什麼是 Git Bash 呢?其實只要你的電腦有安裝 Git,就會自動附帶安裝 Git Bash。它是一個類似 Linux 的指令列介面,能讓你在 Windows 上直接使用許多 Linux 指令。

這邊還不熟悉 Git 的話也沒關係,我們後面章節有空再來介紹 Git。

結語

老實講,我以前很常幹一件事情,把 example.rar 改成 example,然後作業系統就無法辨識這個檔案是什麼類型的檔案

這樣當我爸點擊這個檔案時,就會出現「無法開啟這個檔案」的錯誤訊息,他就不會再去嘗試打開這個檔案哩~

最後應該滿多人沒有看過 Yahoo! 即時通的,所以這邊我也剛好翻出一個 Youtube 影片,讓大家一起走進回憶吧!

同步更新

本文將同步更新至以下網站:

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ