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")