12.2 fs package

fsgithub项目地址,fs为文件系统操作提供了一个跨平台的统计接口。本节基本从fs项目照搬demo。

12.2.1 安装

使用以下命令从CRAN安装

install.packages("fs")

安装来自GitHub的开发版本,其中包括:

# install.packages("devtools")
devtools::install_github("r-lib/fs")

12.2.2 优势

相比base R相同功能,fs包的优势:

  • 向量化。所有fs的函数都是矢量化的,可以批量操作。
  • 编码一致性。fs将输入的路径统一转化为UTF-8。
  • 函数名一致性。fs函数使用一致的命名约定。
  • 函数使用返回“tidy”paths,整洁的路径,和tidyverse一脉相承的概念。

12.2.3 基础用法

fs函数主要有四大类:

  • path_系列用于路径构造

  • file_系列用于文件

  • dir_系列用木目录

  • link_系列用于链接

目录和链接是文件的特殊类型,因为file_在用于目录和链接时,功能通常可以使用。

library(fs)

# `path()`函数构造路径

path('事业部',c('华东','华西','华南','华北'),'周补货数据')
#> 事业部/华东/周补货数据 事业部/华西/周补货数据 事业部/华南/周补货数据 事业部/华北/周补货数据

# 当前目录文件列表
dir_ls()
#> 01-datatable.Rmd         02-database.Rmd          03-strings.Rmd           
#> 04-lubridate.Rmd         05-forcats.Rmd           06-tidy-data.Rmd         
#> 07-Data-manipulation.Rmd 08-loop.Rmd              09-iteration.Rmd         
#> 10-function.Rmd          book.bib                 data                     
#> Data-Handling-in-R.log   Data-Handling-in-R.Rmd   Data-Handling-in-R_files 
#> desktop.ini              file-manipulation.Rmd    index.Rmd                
#> packages.bib             picture                  preamble.tex             
#> Rbook.Rmd                Rbook.Rproj              read-write-data.Rmd      
#> README.md                rsconnect                style.css                
#> _book                    _bookdown.yml            _bookdown_files          
#> _common.R                _output.yml

# 以Rmd结尾的文件
dir_ls(regexp = 'Rmd$')
#> 01-datatable.Rmd         02-database.Rmd          03-strings.Rmd           
#> 04-lubridate.Rmd         05-forcats.Rmd           06-tidy-data.Rmd         
#> 07-Data-manipulation.Rmd 08-loop.Rmd              09-iteration.Rmd         
#> 10-function.Rmd          Data-Handling-in-R.Rmd   file-manipulation.Rmd    
#> index.Rmd                Rbook.Rmd                read-write-data.Rmd

# 创建一个文件夹
tmp <- dir_create(file_temp())
tmp
#> C:/Users/zhongyf/AppData/Local/Temp/RtmpAd7GkL/file38404dd1456f

# 在文件夹中创建文件
file_create(path(tmp, "my-file.txt"))
dir_ls(tmp)
#> C:/Users/zhongyf/AppData/Local/Temp/RtmpAd7GkL/file38404dd1456f/my-file.txt

# 从文件夹中删除文件
file_delete(path(tmp, "my-file.txt"))
dir_ls(tmp)
#> character(0)

# 删除文件
dir_delete(tmp)