Skip to content

Commit 7f75c17

Browse files
author
陌生人
committed
新增文章
1 parent a936760 commit 7f75c17

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: 文件路径的解释
3+
toc: true
4+
date: 2020-08-06 22:57:23
5+
tags:
6+
categories:
7+
---
8+
9+
***文件路径的一些说明***
10+
11+
### 路径的构成
12+
13+
路径大致分为两部分,路径分隔符和目录名(文件名)
14+
路径分隔符在不同的平台是不同的,比如在win上是\\,在\*nix上是/,然后把不同层级的目录给分开,比如/home/test/这样,也可以是/home/test.txt,前者表示一个目录,后者表示一个文件。需要注意的是,路径中不可以带有空格,如果有空格或者是可以被终端解析的符号时需要用\\转义或者是用引号包住,但是如果路径本身就带有引号,那中间的引号就必须转义
15+
16+
\*nix上 **/**表示根目录,是一个最顶层的目录,所有的目录都可以从这里慢慢找到,因为\*nix的目录类似一颗倒挂的树,根目录是这棵树的根,其他的目录和文件就像是这棵树上的分叉
17+
### 路径的分类
18+
19+
#### 路径可以分为两类:绝对路径和相对路径
20+
21+
- 绝对路径是指从根目录开始的,在\*nix上是/开头,在win是盘符开头的,表示一个完整的描述。比如 **/home/test/** 表示从根目录开始找
22+
23+
- 相对路径是指需要从当前终端所在的路径开始找,需要注意的是这里有两个特殊的地方(或者是路径?),就是 **.****..**,其中 **.** 表示当前目录, **..** 表示上一级目录,当一个路径不是盘符开始或者不是根目录开始的就表示一个相对路径,如果不是以 **.** 或者 **..** 开头的,默认是当前目录,比如 **test/** 或者 **./test/** 表示当前路径下的test目录, **../test/** 表示当前目录的上一级目录下的test目录
24+
25+
#### 路径的长度
26+
27+
一个路径的长度是由系统决定的,在64位的Linux下这个长度被定义在<limits.h>头文件中,默认路径的最大长度是4096字符,文件名最长是255个字符,注意,这里是字符,不是文字,文件系统的默认编码是utf8,一个汉字占用3个字符,所以文件名最长是85个汉字,这里仅仅是文件名,文件名加上目录路径才是一个完整的文件路径
28+
29+
#### 路径的命名限制
30+
31+
在文件系统上会有一些命名上的限制,比如说Windows上组成文件名或文件夹的字符可以是英文字母、数字及¥@&+()、下划线、空格、汉字等。但不能使用下列9个字符:
32+
33+
? \ * | “ < > \: /
34+
35+
但是在Linux上没有什么太大的限制,就是不能用 \
36+
37+
因为它是路径分隔符,因此在不同的文件系统中复制或者移动数据的时候需要注意一下
38+
39+
40+

0 commit comments

Comments
 (0)