1
hello2060 2020-11-09 06:59:39 +08:00 1
什么叫默认创建? linux 上有成千上万的程序都会创建文件,为啥会有统一的后缀?
|
2
kokutou 2020-11-09 07:04:51 +08:00 via Android
都没有默认后缀
|
3
msg7086 2020-11-09 07:05:19 +08:00
Linux 默认不会瞎基尔创建文件。
|
4
wjm2038 2020-11-09 07:10:04 +08:00 via Android
windows 也没有默认创建的文件类型啊。。都是你自己选的
|
5
solider245 OP |
6
hello2060 2020-11-09 07:24:24 +08:00 1
@solider245 你可以给他.txt 也可以给他.mp4 .mp3, 但是音乐播放器打开不了他,视频播放器打开不了他,文本编辑器可以打开。文件格式并不取决于文件名里的.xxx 啊
|
7
vk42 2020-11-09 07:25:59 +08:00 4
@solider245 没有后缀就是没有后缀啊,啥叫“没有后缀也是后缀”……
|
8
AmrtaShiva 2020-11-09 07:26:07 +08:00 via iPhone 1
Linux 是根据文件内容判断所谓的“格式” 比如一个 mp4 视频在 win 系统后缀是.mp4 才能播放 Linux 系统对这种后缀没要求 他看的是文件内容
|
9
raaaaaar 2020-11-09 07:26:08 +08:00 via Android 2
Linux 下后缀名是没有意义的,只是方便人的,不像 win 用后缀识别类型,Linux 下文件分为几类,有三种权限。。。
|
10
msg7086 2020-11-09 07:26:38 +08:00 via Android
|
11
hello2060 2020-11-09 07:27:25 +08:00
@solider245 文件格式不是由后缀决定的,那你就不用纠结后缀了啊。你 vi 保存也可以不给任何后缀名,一样可以用文本编辑器打开啊。win 上的后缀名只是给一种提示,是什么格式的,这样能关联到默认的程序来打开,但是到底是不是后缀名提示的格式,那不一定的啊。
|
12
ho121 2020-11-09 07:28:54 +08:00 via Android
楼主对格式是不是有什么误解?所有文件都是二进制储存的,某些特定二进制排列的文件具有某些特定的格式。
比如写文章,文章都是文字组成的,有的是诗歌,有的是散文,有的文章可能既是诗歌也是散文,有的随便瞎写的可能就不属于任何文体。 而扩展名完全是属于文件名的一部分,只是为了人容易识别,不代表文件的真实格式。相当于文章的标题,不能说我标题中带有“诗歌”两个字,我的正文就一定是诗歌。 |
13
TStealer 2020-11-09 07:29:52 +08:00 via Android 1
任何系统都不存在什么默认后缀名。
首先你要理解后缀名是个什么东西。后缀名终究只是一个文件名,它的存在只是方便操作系统选择处理这个文件的应用程序,后缀和你文件自身属性完全没有关系,一个 Microsoft Office 文件你删除后缀名一样能打开,不是 Office 的文件你加上.doc 也照样打不开。 所以后缀名只是一个文件名中的一部分,你这个问题相当于在问操作系统有没有默认的文件名后缀,那你觉得有吗? |
14
msg7086 2020-11-09 07:35:51 +08:00
后缀名这个概念,原本是 DOS 时代 FAT 文件系统上的东西,后来 ISO9660 上也有用到类似的规范。
但是这些东西早在十几年前就淘汰了。 现在后缀名仅仅是文件名中的一部分。 比如说你可以创建 a. .a a 这三个不同的文件,Linux 上也是,Windows 上也是。后缀名早就不是必须的东西了。 |
15
holulu 2020-11-09 07:41:48 +08:00
后缀只是名字的一部分,跟格式没有关系。即使是 Windows 一样可以给一个 mp4 文件写上.txt 后缀。
无论是哪个操作系统也不会在创建文件的时候给默认格式的,格式属于文件内容的范畴,和文件名一点关系也没有。你往文件写入什么格式的内容,文件就是什么格式。 |
16
xuanbg 2020-11-09 07:57:36 +08:00 1
@raaaaaar windows 也不靠扩展名识别文件类型,只不过 windows 可以按扩展名来给你一个默认的打开方式罢了。这一点上面不仅是 Windows,macOS 这些图形界面文件管理器也都是这样干的。
|
17
loading 2020-11-09 07:58:38 +08:00 via Android
可以试一下这个命令:
touch helloworld |
18
seers 2020-11-09 08:16:02 +08:00
|
19
VeryZero 2020-11-09 08:21:58 +08:00
不要把 windows 那一套思维带到 Linux 里,否则会举步维艰...
|
20
1KN6sAqR0a57no6s 2020-11-09 08:39:02 +08:00
文件本没有后缀,用的人多了,也就有了后缀。
|
21
nutting 2020-11-09 08:41:34 +08:00
后缀的标准叫法应该是扩展名,这是 dos 提出的概念吧,为了区分内容
|
22
babyfive 2020-11-09 08:44:06 +08:00
linux 后缀有和没有是一样的,有后缀只是为了使用者(也就是我们)可以区分。机器是不识别后缀的。
|
23
nvkou 2020-11-09 08:47:44 +08:00 2
扩展名只是在文件名的层次上归类文件类型而已. 和实际文件类型没有关系的
xxx.jpg 是在文件名层次声明这是 JPEG 图像.双击时会以.jpg 关联的程序打开该文件. 但是这到底是不是合法的 jpg 文件只有程序自己读取的时候才知道 另外 linux 上的文件不一定代表磁盘上的一段扇区. 可以是网络 socket,可以设备 io,万物皆文件 |
24
int64ago 2020-11-09 08:51:26 +08:00
你还是用 Windows 吧
|
25
qinyusen 2020-11-09 09:01:13 +08:00 2
@solider245 后缀的目的是人为表述规则,也就是人为规定就行,但是 linux 的文件管理不是强依赖后缀名。
用过 git 吧? .gitignore 这文件类型是啥? 前面的. 就是表示这是个隐藏文件,linux 规定以.为开头的是隐藏文件, 那么请问后缀是啥? 因为文件名本身已经是规则了,那后缀就没啥意义。 或者你看一下 Makefile,请问后缀名是啥? 又一个文件名本身就是规则的。 windows 里表述可执行的后缀是 exe 么? 那 linux 里可执行是怎么表示的? ls -l 看一下,有没有可执行权限就好。 综上,个人观点:“后缀名只是文件用来表述规则的一种方法而已, 而不是后缀名就是一切的规则。” =========================================== 以下是一些可能是错误的认知经验: 愿你能理解我的表述。另外,理解系统的设计哲学之后再对比映射就好。 比如 linux 的设计哲学之一就是“一切皆文件”, 设备也是文件( cat /dev/ttyusb0 就可以读取 usb 串口,而不是 windows 那种打开一个程序-比如串口大师什么的,然后再解析),属性也是文件("cat /proc/cpuinfo" 就是查看 cpu 属性) 诸如此类的还有流这个概念,引发出管道,也就是 UNIX 设计哲学里一切都是精简的可服用的小的模块,这个看看《 UNIX 设计哲学》还有一些相关的材料,愿你可以很快理解 windows 设计哲学比较复杂,但是有一个是“所见即所得”,一个是窗口化,所以有了常见文件类型映射固定图标,以完成这件事儿,即见到这图标,就知道这是个什么类型的文件。 (这是一种感知 /交互的 规则) 如果这个事儿,换到 ios 上,你会发现,又不一样了。。。。 操作系统是门设计艺术。 套用不同体系下的规则去相互理解,有很多时候百害而无一利。 |
26
cdafsd 2020-11-09 09:02:41 +08:00
是想说文件头吧
|
27
RickyC 2020-11-09 09:11:09 +08:00
windows 下的文件默认是什么格式的后缀?
默认是没有后缀的. 我想 linux 也是如此 |
28
natashahollyz 2020-11-09 09:12:26 +08:00
touch abc
随便写点 再 cat abc 不需要后缀 |
29
natashahollyz 2020-11-09 09:13:15 +08:00
另外 windows 新建文件不是让你选文件格式的么?选啥就是啥
|
30
brader 2020-11-09 09:14:19 +08:00
Linux 并不以文件后缀来判别文件类型,文件后缀是给人看的,方便管理员管理文件,并不是给机器识别的。
现在主流的 Linux 文件类型,一般就两种:ASCII 文件、二进制文件。 |
31
kiracyan 2020-11-09 09:18:07 +08:00
...linux 哪有后缀
|
32
yanue 2020-11-09 09:22:10 +08:00
还是先去系统学习一下吧
|
33
kevinwkxw 2020-11-09 09:30:00 +08:00
所谓的后缀名加上“.”都是文件名的一部分,可以根据文件的用途随便写或不写,后缀名对于人的意义是便于区分文件类型,对于程序一般来说没有特殊含义,程序在识别文件时一般按文件前几个字节( magic number )来检验,当然也有程序先按文件名特征进行下过滤,如名字中必需包含特定后缀。
|
34
gunpowderfans 2020-11-09 09:32:21 +08:00 via Android
默认就可以创建没有扩展名的文件,Windows 也一样
|
35
ShallowAi 2020-11-09 09:34:56 +08:00 via Android
后缀并不代表文件类型.
你想它是什么就是什么,who cares |
36
no1xsyzy 2020-11-09 09:39:48 +08:00 1
难道 .gitignore 文件的后缀名是 .gitignore 吗?
虽然 windows 确实傻到这么认为的,并且在 win10 某个 build 以前包括 win8.1 以前都不允许在资源管理器里直接改名字到 .gitignore,必须在命令行 ren 或者保存对话框才行…… @msg7086 见上,a. 和 .a 在 windows 下需要点技术…… 当然这不是本质问题 说来我想起来 win98 (还是因为 FAT32 ?)下 mkdir a../ 会造成一个巨大的问题,会产生一个资源管理器无法遍历到,但可以访问的隐藏文件夹。 …… 然后看了下,Win10 2004 Build 19041.508 仍然有这个 bug,但命令行下屏蔽了 mkdir a../ 的操作,拒绝了新建这样的文件夹…… 但可以从 WSL 里 $ mkdir a $ mkdir a. $ mkdir a.. $ touch a/zero $ touch a./one $ touch a../two $ tree 然后从资源管理器里访问,不管点开哪个都只能看到 zero…… 从 “无法遍历到,但可以访问” 变成了 “无法遍历也无法访问”…… 服了,千古 bug 。 |
38
laoyur 2020-11-09 09:45:20 +08:00
估计楼主看完这些回复已经凌乱了吧
|
39
newmlp 2020-11-09 09:45:43 +08:00
为啥非得有后缀啊,后缀也是文件名的一部分,可有可无
|
40
JerryCha 2020-11-09 09:48:37 +08:00
无论是 Windows 还是 Linux 还是 macOS,默认都是没有后缀的。
在上述三个系统中,后缀对应用都是无意义的。 在 Windows 与 macOS 中,后缀只是为了方便关联文件类型的默认处理应用 |
41
msg7086 2020-11-09 09:55:20 +08:00
@no1xsyzy 这些算是操作系统下的一些软件上的限制。不说 WSL,其实直接开个 msys2 就能跑了。
这个主要是因为后缀的点会被自动 strip 掉,所以访问 a.. 会被强行转换成访问 a,所以才有了这个 bug 。 (其实这说不定算是个 feature,毕竟 strip 点是要手动编码进去的。) |
42
Pythondr 2020-11-09 09:57:58 +08:00 via iPhone
后缀是给人看的,而不是机器
|
43
gitopen 2020-11-09 10:04:10 +08:00
建议恶补《计算机组成原理》。。逃。。。
|
44
love 2020-11-09 10:26:57 +08:00
后缀自己手动加呢,后缀只是进一步指示文件的内容格式,基本上所有二进制文件头都有文件格式标记,所以在 linux 下不指定后缀基本也能正常打开文件,比如把视频文件加.txt 后缀双击还是会用播放器打开,不过 windows 不行,那个只看后缀不看内容
|
45
no1xsyzy 2020-11-09 10:28:14 +08:00 1
@no1xsyzy 仔细审视了这个千古 bug……
mkdir a a. a.. a... echo zero | tee a/zero | tee z echo one | tee a./one | tee z. echo two | tee a../two | tee z.. echo three | tee a.../three | tee z... PyCharm Community 2020.2, CMD, PowerShell 7.0.2, python 3.8.5, Notepad++ v7.8.8 a == a. != a.. != a... z == z. == z.. == z... Total Commander 9.22a a == a. != a.. != a... z != z. != z.. != z... explorer[.]exe tree[.]com a == a. == a.. == a... z == z. == z.. == z... (也许) WSL1, VSCodium a != a. != a.. != a... z != z. != z.. != z... 顺便,上述中 PyCharm 可能蕴含了 Java 访问文件系统的方式,VSCodium 可能蕴含了 node 访问文件系统的方式。 |
46
shijingshijing 2020-11-09 10:34:51 +08:00
可以使用 file 查看文件类型:
file bash_rc file xxx.iso |
47
boris93 2020-11-09 10:34:53 +08:00 via Android
后缀名只是文件名的一部分,只是一个助记符,它什么都代表不了
也不存在什么系统的默认后缀 文件类型,由文件头决定 |
48
no1xsyzy 2020-11-09 10:39:35 +08:00
@msg7086 我记得 Git bash 是 MSYS2,试了下确实可以……
顺便看下 #45 吧…… 各种实在是太诡异了…… 经典框架还缺个 Qt,但我不记得有什么 Qt 的文件查看器了 当初 win98 explore 的表现为 a == a. != a.. 的时候,我拿来电脑课上藏游戏 因为电脑教室很多人用,游戏存档会被别人动 所以我就藏了一份自己的…… 地址栏直接输入 D:\a..\ 就能进隐藏文件夹了,D:\ 下面看不到 a..,只能看到 a.(尽管我并没有新建 a.,但自动产生了) |
49
onice 2020-11-09 10:42:41 +08:00
linux 下的文件没有后缀。系统不使用后缀来辨别文件是何种类型。linux 下只有文本文件和二进制文件。
|
50
msg7086 2020-11-09 10:46:49 +08:00
@no1xsyzy Windows 下处理后缀点有毒,没办法了。
因为 8.3 时代的后缀点加不加是等效的,所以应该会有一定的处理逻辑在里面,解决一些历史遗留问题。 |
51
Xusually 2020-11-09 10:54:55 +08:00
i@mac ~ % uname -a
Darwin [email protected] 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64 i@mac ~ % touch 我就是没有后缀 i@mac ~ % touch 我有.后缀 i@mac ~ % ls | grep 后缀 我有.后缀 我就是没有后缀 |
52
Jooooooooo 2020-11-09 11:00:51 +08:00
没后缀
linux 没有后缀这个概念 |
54
yws112358 2020-11-09 11:11:40 +08:00
你说的后缀 叫做:扩展名 是方便关联(或使用户快速识别)执行程序用的 完全可以没有扩展名,手动选择某程序来打开。
|
55
mtdhllf 2020-11-09 11:11:47 +08:00
文件内容的格式,一般在文件的头部,名称只是帮助帮助我们辨别的标记,有没有都可以~
|
56
yolee599 2020-11-09 11:28:58 +08:00
文件类型不是取决于后缀,都是被 win 惯的
|
57
ppphp 2020-11-09 11:35:02 +08:00
桌面程序会看后缀判断文件类型,比如各种文件管理器,比如命令行里 mac 和 windows 的 open,linux 的 xdg-open,当然楼主问得出这个问题估计也不太懂这个。。。
|
58
JeffGe 2020-11-09 11:35:31 +08:00 via Android
一个人默认的姓名是中文、英文、日文还是其它语言?
|
59
Cielsky 2020-11-09 11:36:45 +08:00 via Android
后缀是给人看的,有没有都无所谓。
前段时间才有人问过搜一下也找到了 |
60
solider245 OP |
61
zbl430 2020-11-09 11:53:50 +08:00
```
$ file 新建空文件 新建空文件: ASCII text ``` |
62
solider245 OP @shijingshijing 这么多回答发现你就的靠谱。
问题解决了,自己回答自己好了。 1. 单独创建一个文件不写内容,文件类型是 empty 2. 写入内容后,文件类型是 abb.md: ASCII text |
63
pepesii 2020-11-09 11:58:24 +08:00
后缀格式只是通过名字让你知道这个文件大概是啥格式的,它只是一个 label,有可能一个文件是 a.pdf,但是实际上它是一个 elf 的文件格式;
你可以通过 file 命令来查看一个是什么类型的文件 |
64
Lemeng 2020-11-09 11:58:26 +08:00
linux 没有这么讲究吧,都是 win 里面的概念
|
65
codehz 2020-11-09 12:00:13 +08:00
@solider245 #60 就叫 “普通文件”
就像你写下一个数字 0,请问它代表什么意义? 你写了几行内容,这说明对于你来说,是当作一个文本文件的,那它就是文本 也可以把它送到音频设备 /dev/audio 里,然后你得到了一个音乐(虽然不一定好听) 你也可以把它送到视频缓冲设备 /dev/fb0 里,然后你得到了一个图片(虽然不一定好看) 问题来了,它到底是什么呢? |
66
tairan2006 2020-11-09 12:00:29 +08:00
@solider245 你想问的是默认文件类型是啥…
|
67
mtdhllf 2020-11-09 12:00:34 +08:00
@solider245 #60 看完这个你还不懂我就没话说了 https://blog.csdn.net/xiangshangbashaonian/article/details/80156865
|
68
JeffGe 2020-11-09 12:01:00 +08:00 via Android
@solider245 这个文件就叫文件,是什么内容取决于你写入什么内容,名字叫什么取决于你给这个文件起的什么名字,文件是什么后缀取决于你起名给它什么后缀。听起来像废话,可是你问的问题就是这样的……
|
69
hello2060 2020-11-09 12:01:49 +08:00
@solider245 回到 Linux,我创建了一个文件,可以根据文件的内容来定义他属于哪种文件。那么,当我创建了一个文件,这个文件默认是什么文件呢?或者是 txt 还是啥?---- 是什么文件取决于文件的内容,你问默认什么文件等于问默认什么内容,有默认内容吗?
写了几行内容是啥文件?取决于你写了啥啊,vi 还能二进制编辑呢,完全可以写个 mp4 exe 出来啊 |
70
tairan2006 2020-11-09 12:02:04 +08:00
然而并没有默认文件类型,file 命令是猜的
|
71
Huelse 2020-11-09 12:02:11 +08:00
后缀只是给用户态看的,内核态只相信文件头
默认是两者要相统一,虽然有的时候可以不遵守 |
72
solider245 OP @tairan2006 没有类型也是一种类型啊,不可能凭空创造一种文件。按你的说法,就是创建了一个没有类型的文件
|
73
icyalala 2020-11-09 12:08:15 +08:00 7
大家发现好不容易有个谁都懂的问题,赶紧纠正楼主。
楼主没有被大家带走,继续用原有思维解释,并且认为问题解决了🤣 |
74
CEBBCAT 2020-11-09 12:15:49 +08:00 via Android
为什么要在这种帖子上浪费时间…完全不值得,这个帖子甚至应该被移到其他节点
|
75
wizardoz 2020-11-09 12:18:37 +08:00
后缀对 linux 不重要,在 linux 上,文件后缀的唯一用途是给人看。
|
76
codehz 2020-11-09 12:22:04 +08:00 via Android 1
我觉得楼主可能是类比 windows 新建文件菜单了
( windows 下右键新建文件可以选择多种类型是因为程序预先设定了空文件模板) 但是模板纯粹是认为设定的,如果认为文件必须要有模板才能创建,那就大错特错了,这只是为了用户体验设计的一个功能,不代表这就是新建文件的唯一方法。 如果说新建文件存在一个默认类型,那它就是“普通文件”类型 这是唯一能对应的文件类型,除此之外,还有“文件夹类型”,“设备文件”,“管道文件”等特殊文件类型,但是他们大概不符合新建的语义。。。 |
77
icyalala 2020-11-09 12:27:25 +08:00 1
@solider245 file 命令只是根据文件头猜测一个可能的类型。
比如你试试 echo "gpch1234" >> test.md 看看 file 命令输出什么?看看和你想的不一样吧? 你所说的那个 "类型" 或者 "格式" 不是一个明确的概念或者固有属性。 |
78
k9982874 2020-11-09 12:30:01 +08:00
哈哈哈哈哈哈 嗝~~~~
|
79
solider245 OP |
80
fiveelementgid 2020-11-09 12:35:11 +08:00 via Android
答:Linux 文件不需要后缀格式,Linux 系统用文件头(file 命令?)来识别文件格式
我怀疑你在钓鱼 |
81
codingadog 2020-11-09 12:38:23 +08:00 via Android
|
82
GuuJiang 2020-11-09 12:39:25 +08:00 via iPhone 1
file 命令输出的“类型”严格说起来应该叫作“文件内容”的类型,而不是文件本身的一个属性,从你上面的回复看显然把它当成文件本身的一个属性了,这就是你无法理解以上所有回复的原因所在,你可以理解为文件本身只是一个容器,你往里写入 mp3 的内容,file 命令就有可能输出 mp3,往里写入 jpg 的内容,file 命令就有可能输出 jpg,之所以说可能,是因为 file 命令只是一种探测,有可能出现误判
题外话:这个帖子生动地证明了在 XY 问题中说出 X 问题的重要性 |
83
codehz 2020-11-09 12:41:13 +08:00 via Android
@fiveelementgid file 其实是猜测,而且也只是用户空间用(而且也可能扫描整个文件),内核是验证可执行文件的头部。
@solider245 区别与 目录文件 字符设备文件 块设备文件 本地 socket 文件 命名管道文件 符号链接文件 之所以这么说,是因为创建文件的方法只能创建出普通文件。 。。(文件夹得 mkdir,设备文件 mknod,管道 mkfifo,socket 是 bind,符号链接 symlink,普通文件 open ) 普通文件下的细分系统是不管的,除非文件开头几个字节命中一些特殊的魔法数字 |
84
nthhdy 2020-11-09 12:41:14 +08:00
操作系统层面,文件名可以没有后缀。后缀是给应用程序和人用的。
比如编辑器遇见 .c 后缀一般就认为是 c 代码,编写完 c 代码一般也保存为 .c 后缀(但是不论读取还是保存,不用 .c 后缀也没关系)。 所以楼主看看自己说的是哪个应用程序,操作的是什么文件,用来干什么的。再了解一下那个应用程序对后缀有什么要求,有什么操作。 |
85
codehz 2020-11-09 12:47:40 +08:00 via Android
@nthhdy 还是有点关系,常见编译器会根据文件后缀来判断语言,写.c 和.cpp/.mm 是不一样的解析模式( gcc 也可以编译 c++,只是不会链接 stdc++库)
|
86
aqqwiyth 2020-11-09 13:04:12 +08:00
大家上面讨论的 file 命令 其实是取 文件的魔数, 比如 java 编译后的 class 文件的魔数就是 CAFE BABE. linux 上有一个魔数映射表.
windows 上是一个可视化交互式的操作系统为了把文件跟应用程序绑定弄的一个便捷操作. (应用可以向系统注册表写入 xx 后缀的文件打开) 场景 1: 你把一个 zip 文件的后缀去掉,再打开操作系统也是会询问你用什么应用打开. 场景 2: 你下载了一个种子文件,但是你没有装任何解析种子 的应用. 操作系统会询问你用什么应用打开. linux 上没有应用程序这一说,所以不存在什么后缀.只是人为的记忆习惯配置后缀. |
87
12101111 2020-11-09 13:16:42 +08:00
https://man7.org/linux/man-pages/man2/open.2.html
https://man7.org/linux/man-pages/man2/openat2.2.html 打开的文件路径是 const char *pathname 指定的. |
88
no1xsyzy 2020-11-09 13:18:28 +08:00 1
@solider245 再看 https://www.v2ex.com/t/713957#r_9608004
另外,问这个文件是什么类型: ``` #>>>>>>>>v print(1)#>3N.i2 ``` 它既是一个合理的 python 源文件,也是合理的 Vim ( V 语言)源文件,也是合理的 Minkolang 源文件 并且,作为 python 源文件,它输出 1,Vim ( V 语言)输出 2,Minkolang 输出 3 请问它是什么类型? 更别说古老的隐写术 “右击本图片另存为,修改后缀名为 rar,即可得到种子文件” 核心在于,图片基本是文件头定长,RAR 文件依赖于 RAR! 头,所以只要 cat a.jpg b.rar > c.jpg 可以简单方便地内插出一个既是 jpg 又是 rar 的文件。 |
89
solider245 OP @nthhdy 问题就是那个软件创建的文件就是没有后缀的,类似在 linux 上创建的默认文件
|
91
cmdOptionKana 2020-11-09 14:05:26 +08:00
@solider245 你说 “不可能凭空创造一种文件”,错。
1. 可以凭空创造一种文件。 2. Windows 和 Linux 都可以凭空创造一种文件。 3. 任何人(懂编程的,不懂编程的)都可以凭空创造一种文件。 4. 事实上一切文件类型都是凭空创造的,包括 word 文件、excel 文件、jpeg 文件等等,都是凭空创造的。 5. 创造 word 文件、excel 文件、jpeg 文件的过程,与你现在凭空创造另一种全新的文件类型的过程,本质上是一样的,只是复杂度不同,没有本质区别(步骤也是一样的)。 |
92
mtdhllf 2020-11-09 14:20:27 +08:00
很多的人回答都有问题,没有 get 到点,回答的也对不上楼主的意思。很多文件数据都是有文件头的,声明了文件类型,还有一些媒体信息等(不同的格式有不同的规范),如 mp4,mkv 等媒体文件,在 windows 下属性--详细信息可以查看时长帧率等数据
|
93
tairan2006 2020-11-09 14:29:20 +08:00
文件头只是一种约定,就是 Magic Number 。为啥不能凭空创建类型?感觉我在浪费时间,算了 block 这个帖子。
|
94
lingxi27 2020-11-09 14:31:51 +08:00
考虑你提问的上下文,可以不太严谨地说,文件就是二进制文件,通过某种文件系统保存于某种存储介质,其具体的“类型”是由使用者决定的
|
95
letking 2020-11-09 14:33:03 +08:00
没有默认后缀名,你起什么名字就是什么名字。touch 1.exe 也不会有任何问题。
|
96
Kagari 2020-11-09 14:41:43 +08:00
简单的说,文件名没有存在文件里面
|
97
hxmg 2020-11-09 15:11:15 +08:00 via Android
这么说吧,后缀其实是文件名的一部分。
你自己手动 touch 一个文件出来, ##有没有后缀取决于你##。 后缀这玩意主要是方便人的。就好像是你给一个压缩包取名“2020 年我钓到的鱼图集.rar” 维基百科: 文件扩展名更重要的作用是让系统决定当用户想打开这个文件的时候用哪种软件运行,如 Windows 系统中 exe 档案是可执行档,doc 档案默认用 Microsoft Word 打开的 Word 文件。 还有,文件格式取决于其二进制内容符合哪些格式的表达标准,和后缀没关系 |
98
cco 2020-11-09 15:17:05 +08:00
linux 所有皆文件。和后缀没关系。
|
99
chinvo 2020-11-09 15:24:17 +08:00
生娃的例子不对
正确的例子是, 有一个生物, 你知道他是个生物, 他就是个生物, 他既可以是人, 也可以是狗子 你不是生了个娃, 你是神, 你造了个生物 |
100
Alexhex 2020-11-09 16:57:54 +08:00
呃,或者这么问这个问题呢?
在 Windows 下或者 Linux 下,当你试图双击某个文件打开的时候,到底发生了什么?系统是以一种什么方式访问某段硬盘数据并调用某个程序打开的? |