21-R语言文件系统操作函数

1、 文件操作函数概览

list.files():查看文件夹下的所有文件   
file.create("A.txt"):创建文件A.txt   或者  cat("内容\n", file="A.txt")
file.exists("A.txt"):判断文档是否存在    
file.remove("A", "B", "C"):删除文件 或者 unlink("A", "B", "C") :【文件或文件夹】
unlink("temp", recursive=F)   :如果文件夹temp为空则删除,不为空则不删除
file.rename("test", "temp"):对【文件或目录】重命名    
file.append("A", "B"):将文件B的内容附到A内容的后面    
file.copy("A", "C"):复制文件A保存为同一个文件夹下的文件C 
file.copy(c("A", "B"), "temp")   :将文件A、B拷贝到temp文件夹中
file.symlink(from, to):创建软连接   
file.show("A"):显示文档A的内容 
readLines("C"):打印输出C的内容   
file.info("A"):查看【文件或文件夹】完整信息     
file.edit("A"):编辑文档  
file.access("A",[0-4]):修改【文件或文件夹】的权限(Linux系统)
file_test("-f", "数据汇总.html"):判断是否是文件
dirname():获取文件的路径
basename():获取文件名
zip: 压缩文件    
unzip: 解压缩文件   

2、文件夹操作函数概览

dir.create("temp"):新建一个文件夹 
dir.create(path="./test/test1_1/test1_2",recursive = TRUE):  递归创建一个3级子目录
list.dirs():显示目录下的子目录  
dir(path="./R/data_set/沙9",,all.files=TRUE)   或者 list.files(".",all.files=TRUE):查看当前目录下的子目录和文件,是否包括隐藏文件
dir(path="./R/data_set/沙9", pattern="^沙九"):只列出以沙九开头的子目录或文件
file.info("./data_set"):查看目录权限
system("tree"):通过系统命令查看目录结构 
file.exists("./test/test1"):检查目录是否存在
Sys.chmod("./test", mode = "0555", use_umask = TRUE):修改目录权限
file.path("test","test1_1","test1"):拼接目录字符串
basename(gerwd()):获取上级目录名
file.link("readme.txt", "hard_link.txt"):硬链接
file.symlink("readme.txt", "soft_link.txt"):软链接

3、文件操作函数

3.1 创建文件

# 清除当前工作空间中的所有对象
rm(list=ls())

# 设置工作空间路径
path = "C:/Users/Admin/Documents/R/data_set"
setwd(path)

# 创建一个文件A,文件内容是'file A','\n'表示换行
cat("我是第一行\n", file="A")  
# 创建一个文件B
cat("我是第二行\n", file="B")  
# 将文件B的内容附到A内容的后面,注意没有空行
file.append("A", "B")  
## [1] TRUE

3.2 检查文件是否存在

file.exists("A")
## [1] TRUE

3.3 查看文件完整信息

file.info("A")
##   size isdir mode               mtime               ctime
## A   24 FALSE  666 2020-01-09 21:58:21 2020-01-09 21:58:21
##                 atime exe
## A 2020-01-09 21:58:21  no

3.4 向文件中追加内容

# 创建一个文件A, 注意会覆盖原来的文件
file.create("A")  
# 将文件B的内容复制10遍,并先后附到文件A内容后
file.append("A", rep("B", 10)) 
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

3.5 新开工作窗口显示文件A的内容

file.show("A")  

3.6 复制文件

# 复制文件A保存为同一个文件夹下的文件C
file.copy("A", "C") 
# 创建名为temp的文件夹
dir.create("temp")  
# 将文件A、B拷贝到temp文件夹中
file.copy(c("A", "B"), "temp") 
## [1] TRUE TRUE
## [1] TRUE

3.7 打印文件

# 打印C
readLines("C")
##  [1] "我是第二行" "我是第二行" "我是第二行" "我是第二行"
##  [5] "我是第二行" "我是第二行" "我是第二行" "我是第二行"
##  [9] "我是第二行" "我是第二行"

3.8 查看文件夹下的所有文件

# 查看文件夹temp下的所有文件名
list.files("temp")  
## [1] "A" "B"

3.9 删除文件

# 删除文件有两个函数可以使用file.remove和unlink,其中unlink函数使用同删除目录操作是一样的
# 如果文件夹temp为空则删除,不为空则不删除
unlink("temp", recursive=F) 
# 删除文件夹temp及其所有文件
unlink("temp", recursive=TRUE) 

# 移除ABC三个文件
file.remove("A", "B", "C")  
## [1] TRUE TRUE TRUE

3.10 文件权限

# 查看文件访问权限,存在
file.access("数据汇总.html",0)
## 数据汇总.html 
##            -1
# 不可执行
file.access("数据汇总.html",1)
## 数据汇总.html 
##            -1
# 可写
file.access("数据汇总.html",2)
## 数据汇总.html 
##            -1
# 可读
file.access("数据汇总.html",4)
## 数据汇总.html 
##            -1
# 查看一个不存在的文件访问权限,不存在
file.access("pm_2014_1.RData111")
## pm_2014_1.RData111 
##                 -1

4、判断是文件还是目录

# 判断是否是目录
file_test("-d", "数据汇总.html")
## [1] FALSE
# 判断是否是文件
file_test("-f", "pm_2014_1.RData")
## [1] FALSE

5、目录操作

# 查看当前工作目录
getwd()
## [1] "C:/Users/Admin/Documents/R"

5.1 查看目录下的子目录

# 查看当前目录下的子目录
list.dirs()
##  [1] "."                                               
##  [2] "./_blog"                                         
##  [3] "./cache_file"                                    
##  [4] "./data_set"                                      
##  [5] "./data_set/沙9"                                  
##  [6] "./data_set/沙9/【每周统计情况】"                 
# 查看当前目录下的子目录和文件
dir()
# 或者
list.files()
list.files(".",all.files=TRUE)
##  [1] "_blog"                                        
##  [2] "01-逻辑回归分析.Rmd"                          
##  [3] "02-ggplot2画图参数设置.Rmd"                   
##  [4] "03-ggplot2坐标轴美化.Rmd"                     
##  [5] "04-ggplot2常用主题.Rmd"                       
##  [6] "05-使用ggplot2画图的全过程.R"                 
##  [7] "06-Rmarkdown输出中文pdf模板.Rmd"              
##  [8] "07-Rmarkdown基本设置及语法.Rmd"               
# 查看指定目录的子目录和文件。
dir(path="C:/Users/Admin/Documents/R/data_set/沙9")
## [1] "【每周统计情况】" "沙九训练营第一期" "沙九训练预备期"
# 只列出以沙九开头的子目录或文件
dir(path="C:/Users/Admin/Documents/R/data_set/沙9", pattern="^沙九")
## [1] "沙九训练营第一期" "沙九训练预备期"
# 列出目录下所有的目录和文件,包括隐藏文件。
dir(path="C:/Users/Admin/Documents/R/data_set/沙9",all.files=TRUE)
## [1] "."                ".."               "【每周统计情况】"
## [4] "沙九训练营第一期" "沙九训练预备期"

5.2 目录权限

# 查看当前目录权限
file.info("./")
##    size isdir mode               mtime               ctime
## ./    0  TRUE  777 2020-01-09 21:50:30 2019-09-15 14:32:54
##                  atime exe
## ./ 2020-01-09 21:58:21  no
# 查看指定目录权限
file.info("./data_set")
##            size isdir mode               mtime
## ./data_set    0  TRUE  777 2020-01-09 21:58:21
##                          ctime               atime exe
## ./data_set 2019-10-12 22:45:40 2020-01-09 21:58:21  no

5.3 创建目录

# 在当前目录下,新建一个目录
dir.create("./test")
# 递归创建一个3级子目录./test/test1_1/test1_2
dir.create(path="./test/test1_1/test1_2",recursive = TRUE) 

# 通过系统命令查看目录结构 
system("tree")
## [1] 0

5.4 检查目录是否存在

# 目录存在
file.exists(".")
## [1] TRUE
file.exists("./test/test1")
## [1] FALSE

5.5 检查和修改目录的权限

df <- dir(full.names = TRUE)

# 检查文件或目录是否存在,mode=0。
file.access(df, 0) == 0
##                                         ./_blog 
##                                            TRUE 
##                           ./01-逻辑回归分析.Rmd 
##                                            TRUE 
##                    ./02-ggplot2画图参数设置.Rmd 
##                                            TRUE 
##                      ./03-ggplot2坐标轴美化.Rmd 
##                                            TRUE 
##                        ./04-ggplot2常用主题.Rmd 
##                                            TRUE 
##                  ./05-使用ggplot2画图的全过程.R 
##                                            TRUE 
##               ./06-Rmarkdown输出中文pdf模板.Rmd 
##                                            TRUE 
##                ./07-Rmarkdown基本设置及语法.Rmd 
##                                            TRUE 
# 检查文件或目录是否可写,mode=2。
file.access(df, 2) == 0
##                                         ./_blog 
##                                            TRUE 
##                           ./01-逻辑回归分析.Rmd 
##                                            TRUE 
##                    ./02-ggplot2画图参数设置.Rmd 
##                                            TRUE 
##                      ./03-ggplot2坐标轴美化.Rmd 
##                                            TRUE 
##                        ./04-ggplot2常用主题.Rmd 
##                                            TRUE 
##                  ./05-使用ggplot2画图的全过程.R 
##                                            TRUE 
##               ./06-Rmarkdown输出中文pdf模板.Rmd 
##                                            TRUE 
##                ./07-Rmarkdown基本设置及语法.Rmd 
##                                            TRUE 
# 修改目录权限,所有用户只读(linux系统生效)
Sys.chmod("./test", mode = "0555", use_umask = TRUE)

# 查看目录完整信息,mode=555
file.info("./test")
##        size isdir mode               mtime
## ./test    0  TRUE  555 2020-01-09 21:58:21
##                      ctime               atime exe
## ./test 2020-01-09 21:58:21 2020-01-09 21:58:21  no
# create目录不可以写
file.access(df, 2) == 0
##                                         ./_blog 
##                                            TRUE 
##                           ./01-逻辑回归分析.Rmd 
##                                            TRUE 
##                    ./02-ggplot2画图参数设置.Rmd 
##                                            TRUE 
##                      ./03-ggplot2坐标轴美化.Rmd 
##                                            TRUE 
##                        ./04-ggplot2常用主题.Rmd 
##                                            TRUE 
##                  ./05-使用ggplot2画图的全过程.R 
##                                            TRUE 
##               ./06-Rmarkdown输出中文pdf模板.Rmd 
##                                            TRUE 
##                ./07-Rmarkdown基本设置及语法.Rmd 
##                                            TRUE 

5.5 对目录重命名

# 对test目录重命名
file.rename("test", "temp")
## [1] FALSE

5.6 删除目录

# 删除temp目录下的所有文件和文件夹
unlink("temp", recursive = TRUE)

5.7 拼接目录名称字符串

# 拼接目录字符串
file.path("test","test1_1","test1")
## [1] "test/test1_1/test1"

5.8 获取最底层的子目录名

# 获取文件的路径
dirname("C:/Users/Admin/Documents/R/data_set/沙9/沙九训练预备期/沙9跑班统计19级.csv")
## [1] "C:/Users/Admin/Documents/R/data_set/沙9/沙九训练预备期"
# 上级目录名
basename(getwd())
## [1] "R"
# 文件名
basename("C:/Users/Admin/Documents/R/data_set/沙9/沙九训练预备期/沙9跑班统计19级.csv")
## [1] "沙9跑班统计19级.csv"

5.9 转换文件路径为绝对路径

# 转换~为用户目录
path.expand("~/temp")
## [1] "C:/Users/Administrator/Documents/temp"

5.10 标准化路径,用来转换win或linux的路径分隔符

# linux
normalizePath(c(R.home(), tempdir()))
## [1] "C:\\Program Files\\R\\R-3.6.1"                             
## [2] "C:\\Users\\Administrator\\AppData\\Local\\Temp\\RtmpAxMmOC"
# win
normalizePath(c(R.home(), tempdir()))
## [1] "C:\\Program Files\\R\\R-3.6.1"                             
## [2] "C:\\Users\\Administrator\\AppData\\Local\\Temp\\RtmpAxMmOC"
# 短路径,缩减路径的显示长度,只在win中运行。
# win
shortPathName(c(R.home(), tempdir()))
## [1] "C:\\PROGRA~1\\R\\R-3.6.1"                             
## [2] "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\RtmpAxMmOC"

6、硬连接和软连接

硬连接和软连接,只在Linux系统中使用。

# 硬连接
file.link("readme.txt", "hard_link.txt")
## Warning in file.link("readme.txt", "hard_link.txt"): 无法打
## 开'readme.txt'到'hard_link.txt'的链结,原因是'系统找不到指定
## 的文件。'
## [1] FALSE
# 软连接
file.symlink("readme.txt", "soft_link.txt")
## [1] TRUE
# 查看文件目录
system("ls -l")
## [1] 127

7、几个特殊的目录

# 查看R软件的相关目录
R.home() 

# 查看R核心包的目录
.Library 

# 查看R核心包的目录和root用户安装包目录
.Library.site 

# 查看R所有包的存放目录
.libPaths() 

# 打印R软件bin的目录
R.home(component="bin")

# 打印R软件文件的目录
R.home(component="doc")

# 检查系统中R文件的位置
~ whereis R

# 打印环境变量R_HOME
~ echo $R_HOME

# base包的存放目录
system.file()

# pryr包的存放目录
system.file(package = "pryr")

你可能感兴趣的:(21-R语言文件系统操作函数)