laravel文件系统操作笔记

本文详细介绍了Laravel框架中文件系统的使用方法,包括如何通过配置动态更改根目录、各种文件操作API,如读取、写入、复制、移动等,以及如何递归获取目录下的所有文件和子目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到个需求,需要编译某个目录下的所有 .php 文件(怎么感觉这种场景碰到过好多次,不同的公司项目中,都碰到过。。,但一直也没有总结过一个好的方法)
不想再写了。。。另外是感觉自己写出来的太弱了。。。所以就上网搜索,看有没有。一搜就是一般的递归方法,也没细看,想着看laravel有没有高大上的代码。

定位到了 laravel 官方文档:
	文件系统/云存储:Storage

(再吐槽下:可见之前看文档有多不仔细...可能也是当时觉得没啥用,没啥印象吧!)
仔细一看,很强大啊!递归所有文件、所有目录,支持不同驱动,文件的操作,文件的写入、追加,应该是我们想到的,人家估计都实现了!

github地址:	
	https://github.com/thephpleague/flysystem

官网:
	https://flysystem.thephpleague.com

laravel的storage使用的就是它,文档地址:
	http://laravelacademy.org/post/3181.html

具体文档就不看了,内容太多,先解决我当前的问题。过一遍文档:
	配置:
		config/filesystems.php
		默认的驱动是 'local',默认的目录的根路径是 'storage_path('app')'

		/*
			注意:
				根路径是 'storage/app',所以我们的 '/' === 'storage/app',且操作文件范围都不能超过 'storage/app/',否则报错!
				Path is outside of the defined root

			解决方法:
				很多时候,我们可能需要存储到不同的目录,我们总不能修改 '默认配置'。
				所以,我们可能更想动态的修改默认的 '根目录',查看了下 laravel/Filesystem,未提供接口!所以,我们只能自己在调用前,修改默认配置:
				使用config($key, $default),我们来修改默认的配置项

				config(['filesystems.drivers.local.root' => base_path()])
				// laravel公共函数,提供了该函数,可以参看源码
		 */

	方法:
		1.获取其他驱动
			Storage::disk('local');
			Storage::disk('local')->get('avatar.jpg');		// 在local驱动下,获取avatar.jpg文件内容

		2.如果使用默认驱动,可省略 disk('local')
			Storage::get('avatar.jpg');

		3.get()	- 获取文件内容,返回文件的 '原生字符串'

		4.exists('avatar.jpg') - 文件是否存在

		5.size('avatar.jpg') - 获取文件大小,单位为 '字节'

		6.lastModified('avatar.jpg') - 文件最后一次修改时间,'unix时间戳'

		7.put('avatar.jpg', $content) - 写入文件,支持 '内容写入'
		  put('avatar.jpg', $resource) - 写入文件,支持 '资源写入'(处理大文件时,推荐使用文件流)

		8.copy('old.txt', 'new.txt') - 复制文件

		9.move('old.txt', 'new.txt') - 移动文件

		10.prepend('file.txt', '头追加') - 插入内容到文件头部

		11.append('file.txt', '尾追加') - 插入内容到文件尾部

		12.delete('file.txt') - 删除单个
		   delete(['1.txt', '2.txt']); - 删除多个

		13.files('test')- 获取目录下所有文件

		14.allFiles('test') - '递归' 获取目录下所有文件

		15.directories('test') - 获取目录下所有目录

		16.allDirectories('test') - '递归' 获取目录下所有目录

		17.makeDirectory('test') - 创建目录。支持 '递归创建' makeDirectory('test/dong/xue/min')

		18.deleteDirectory('test') - 删除目录。注意:!!移除目录下的所有文件和目录!!

/*
	注意:
		laravel的文件系统处理,使用的是 'thephpleague/flysystem',提供的api进行过封装,并非是 'thephpleague/flysystem' 默认的方法!2个不同!
		要想使用原生的 'thephpleague/flysystem' 方法,不能使用 Storage,2者不同!
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值