R语言文件系统管理

计算机文件系统(使用文件和树形目录)是一种存储和管理计算机数据的方法

1.list.dirs

#查看当前目录的子目录,返回字符向量,full.names-是否提供相对文件路径,recursive-是否列出递归到目录的文件/目录(list.dirs针对的是目录)
#当recursive=TRUE,输出value也包括路径本身
list.dirs(path="C:/home",full.names=TRUE,recursive=TRUE)		

2.dir

与list.files函数功能相同,dir()返回一个字符向量,列出第一个参数指定目录中所有文件/子目录的名称

dir(path="C:/home",pattern=NULL,all.files=TRUE,full.names=FALSE,recursive=FALSE,ignore.case=FALSE,include.dirs=FALSE,no..=FALSE)
#pattern-可选的正则表达式,返回与正则表达式匹配的文件名,all.files-是否返回所有文件名(可见文件+隐藏文件),ignore.case-模式匹配是否应该不区分大小写,include.dirs-子目录名称是否应包含在递归列表中(总处于非递归的状态)
#注:KKKK/HHHH/oo.txt 

dir(path="C:/home",recursive=T,include.dirs=F,full.names=T)
#包括递归到目录的文件(加粗),但不包括子目录名称
[1] "C:/home/base64.js"                        
 [2] "C:/home/case_info.csv"                    
 [3] "C:/home/com.js"                           
 [4] "C:/home/CryptoJS.js"                      
 [5] "C:/home/document_basic_info.csv"          
 [6] "C:/home/document_body.csv"                
 [7] "C:/home/getkey.js"                        
 [8] "C:/home/KKKK/HHHH/oo.txt"                 
 [9] "C:/home/legal_base_total.csv"             
[10] "C:/home/legal_document_R.r"               
[11] "C:/home/md5.js"                           
[12] "C:/home/Navi.js"                          
[13] "C:/home/pack_js.html"                     
[14] "C:/home/pack_js_RunEval.html"             
[15] "C:/home/sha1.js"                          
[16] "C:/home/unpack_js_20180915调试getkey.html"
[17] "C:/home/unzip.js"                         
[18] "C:/home/unzip_runEval.js"                 
[19] "C:/home/查询条件.csv"                     
[20] "C:/home/查询条件历史/查询条件1.csv"       
[21] "C:/home/历史版本/getkey.js" 

dir(path="C:/home",recursive=F,include.dirs=F,full.names=T)
#不包括递归到目录的文件/目录,包括非递归状态的当前目录的子目录(加粗)
 [1] "C:/home/base64.js"                        
 [2] "C:/home/case_info.csv"                    
 [3] "C:/home/com.js"                           
 [4] "C:/home/CryptoJS.js"                      
 [5] "C:/home/document_basic_info.csv"          
 [6] "C:/home/document_body.csv"                
 [7] "C:/home/getkey.js"                        
 [8] "C:/home/KKKK"                             
 [9] "C:/home/legal_base_total.csv"             
[10] "C:/home/legal_document_R.r"               
[11] "C:/home/md5.js"                           
[12] "C:/home/Navi.js"                          
[13] "C:/home/pack_js.html"                     
[14] "C:/home/pack_js_RunEval.html"             
[15] "C:/home/sha1.js"                          
[16] "C:/home/unpack_js_20180915调试getkey.html"
[17] "C:/home/unzip.js"                         
[18] "C:/home/unzip_runEval.js"                 
[19] "C:/home/查询条件.csv"                     
[20] "C:/home/查询条件历史"                     
[21] "C:/home/历史版本" 

dir(path="C:/home",recursive=T,include.dirs=T,full.names=T)
#包含递归到目录的文件/目录,也包括子目录名称
[1] "C:/home/base64.js"                        
 [2] "C:/home/case_info.csv"                    
 [3] "C:/home/com.js"                           
 [4] "C:/home/CryptoJS.js"                      
 [5] "C:/home/document_basic_info.csv"          
 [6] "C:/home/document_body.csv"                
 [7] "C:/home/getkey.js"                        
 [8] "C:/home/KKKK"                             
 [9] "C:/home/KKKK/HHHH"                        
[10] "C:/home/KKKK/HHHH/oo.txt"                 
[11] "C:/home/legal_base_total.csv"             
[12] "C:/home/legal_document_R.r"               
[13] "C:/home/md5.js"                           
[14] "C:/home/Navi.js"                          
[15] "C:/home/pack_js.html"                     
[16] "C:/home/pack_js_RunEval.html"             
[17] "C:/home/sha1.js"                          
[18] "C:/home/unpack_js_20180915调试getkey.html"
[19] "C:/home/unzip.js"                         
[20] "C:/home/unzip_runEval.js"                 
[21] "C:/home/查询条件.csv"                     
[22] "C:/home/查询条件历史"                     
[23] "C:/home/查询条件历史/查询条件1.csv"       
[24] "C:/home/历史版本"                         
[25] "C:/home/历史版本/getkey.js"

dir(path="C:/home",recursive=F,include.dirs=T,full.names=T)
#包括子目录名称,但不包括递归到目录的文件/目录
 [1] "C:/home/base64.js"                        
 [2] "C:/home/case_info.csv"                    
 [3] "C:/home/com.js"                           
 [4] "C:/home/CryptoJS.js"                      
 [5] "C:/home/document_basic_info.csv"          
 [6] "C:/home/document_body.csv"                
 [7] "C:/home/getkey.js"                        
 [8] "C:/home/KKKK"                             
 [9] "C:/home/legal_base_total.csv"             
[10] "C:/home/legal_document_R.r"               
[11] "C:/home/md5.js"                           
[12] "C:/home/Navi.js"                          
[13] "C:/home/pack_js.html"                     
[14] "C:/home/pack_js_RunEval.html"             
[15] "C:/home/sha1.js"                          
[16] "C:/home/unpack_js_20180915调试getkey.html"
[17] "C:/home/unzip.js"                         
[18] "C:/home/unzip_runEval.js"                 
[19] "C:/home/查询条件.csv"                     
[20] "C:/home/查询条件历史"                     
[21] "C:/home/历史版本"   

3.file.info

file.info():参数是表示文件/目录的字符串向量,给出每个文件的大小、创建时间、是否为目录等信息,输出value为data.frame类

#mtime-文件修改时间,ctime-上次状态更改(指mode),atime-上次访问时间
file.info("C:/home/base64.js")
size isdir mode               mtime
C:/home/base64.js 3670 FALSE  666 2018-09-02 22:27:15
ctime                  atime                 exe
2018-09-02 22:27:12  2018-09-02 22:27:12  no

4.dir.create

#只能创建目录,不能新建文件
dir.create(path,showWarnings=TRUE,recursive=FALSE,mode="0777"):新建一个目录
dir.create("C:/home/KKKK/jj")	#前提C:/home/KKKK已经存在
dir.create("C:/home/gh/gj",recursive=FALSE)		#error
dir.create("C:/home/gh/gj",recursive=TRUE)	#递归创建两级子目录

5.file.exists

检查目录或文件是否存在

file.exists("C:/home/KKKK/jj")	#TRUE
file.exists("base64.js")	#TRUE

6.file.access

#确定目录/文件的可访问性mode=0(是否存在),mode=1(是否可执行),mode=2(是否可写),=4可读
file.access(name,mode=0)	#name字符向量

7.file.rename

#重命名文件名或路径名
file.rename(from,to)	#文件名或路径
file.rename('C:/home/KKKK','C:/home/KKGG')	#更改目录路径名
file.rename('C:/home/KKGG/HHHH/oo.txt','C:/home/KKGG/HHHH/og.txt')

8.unlink+file.remove

删除文件和目录

unlink(x,recursive=FALSE,force=FALSE)	#x允许使用通配符(通常是*?),recursive-目录是否应该递归删除(recursive=FALSE目录不被删除,如果目录中包括子目录或文件则需要递归删除)

unlink('C:/home/gg.txt')	#删除文件,但没有到回收站
unlink('C:/home/gg')	#gg目录并未被删除,即便是空目录
unlink('C:/home/gg',recursive=T)	#gg目录被删除

#file.remove一般不用来删除目录(提示没有权限)
file.remove('C:/home/gg.txt')

9.file.path

file.path():以独立于平台的方式从组件中构造文件的路径,拼接目录字符串

gg<-file.path('KKGG','HHHH')	#KKGG/HHHH
dir(gg)	#og.txt

10.dirname

#获取完整的目录路径-字符形式
dirname('tian/gg/h/j')		#tian/gg/h
dirname('tian/gg/h/j/o.txt')		#tian/gg/h/j

11.basename

#获取最底层的目录名/文件名
basename('tian/gg/h/j')	#j
basename('tian/gg/h/j/o.txt')	#o.txt

12.normalizePath

#将文件路径转换为平台的规范形式(转换路径分隔符),以便比较绝对路径和相对路径
normalizePath(path,winslash='\\',mustWork=NA)	
#path-字符向量,winslach-c("/", "\\")	#只支持两种方式

13.file_test

file_test('-d','C:/home')	#判断是否为目录
file_test('-f','C:/home/base64.js')		#判断是否为文件

14.file.create

#文档创建,只能创建文件,不能创建目录
file.create('C:/home/hjii.txt')
file.create('C:/home/hjii.csv')
注:可用cat函数创建有内容的文件

15.file.append

#文档添加
file.append('C:/home/1.xls','C:/home/2.xls')	#显示TRUE(文件size增加,但打开关闭后,文件size恢复原状),数据并未真正append,建议使用txt格式文本

16.file.copy

#文件复制(或文件移动),overwrite-是否应覆盖现有目标文件,recursive-逻辑值,如果是目录是否应该复制目录及其内容
file.copy(from,to,overwrite=recursive,recursive=FALSE,copy.mode=TRUE,copy.date=FALSE)
#将1.txt文件的内容复制到2.txt文件中(overwrite必须设置为TRUE),将1.txt的文件内容写入2.txt中
file.copy('C:/home/1.txt','C:/home/2.txt',overwrite=TRUE)

#将1.txt文件复制到C:/KKGG目录中
file.copy('C:/home/1.txt','C:/home/KKGG')

#如果C:/KKGG目录中有1.txt
file.copy('C:/home/1.txt','C:/home/KKGG',overwrite=F)	#输出结果FALSE
file.copy('C:/home/1.txt','C:/home/KKGG',overwrite=T)	#TRUE

#如果from和to都是目录,需要设置recursive=TRUE

17.file.show

以平台特定的方式显示一个或多个普通文本文件

file.show(file.path(R.home("doc"), "COPYRIGHTS"))

18.zip

#压缩文件
zip(zipfile,files,flags="-r9X",extras="",zip=Sys.getenv("R_ZIPCMD","zip"))
#zipfile-zip文件路径名,files-要包含的记录文件路径的字符向量
zip(zipfile="zz.zip",files=c("1.txt","2.txt"))

19.unzip

#解压缩zip文件,zipfile-zip文件的路径名,files-默认提取所有文件(要提取的记录文件路径的字符向量),exdir-提取文件的目录(如果没有,则创建)
unzip(zipfile,files=NULL,list=FALSE,overwrite=TRUE,junkpaths=FALSE,exdir=".",unzip="internal",setTimes=FALSE)

unzip(zipfile="tt.zip",files="1.txt",exdir="pp")	#pp为新的目录

20.多个文件内容求和

#多个文件内容求和:建立一个函数计算目录树下所有文件内容的和(假设都是数值型)
#sumtree函数的输入为目录字符串
sumtree<-function(drtr){
tot<-0
fls<-dir(drtr,recursive=TRUE)	#full.names=FALSE
for (f in fls){
f<-file.path(drtr,f)	#构造目录路径
if (!file.info(f)$isdir)
{tot<-tot+sum(scan(f,quiet=TRUE))}
}
return(tot)
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值