<?php
|
|
namespace App\Services;
|
|
use DateTime;
|
|
use Symfony\Component\Finder\Finder;
|
|
|
|
class FileService {
|
|
|
|
public function segmentFiles($baseDir)
|
|
{
|
|
if (!is_dir($baseDir)) {
|
|
return;
|
|
}
|
|
// $files = new Finder();
|
|
// $files->files()->in($baseDir);
|
|
$files = $this->scan_dir($baseDir);
|
|
$firstTime = true;
|
|
$counter = 0;
|
|
$dirCounter = 0;
|
|
$dirName = "";
|
|
foreach ($files as $file) {
|
|
if ($firstTime) {
|
|
$dirName = $baseDir . "/" . date("Y-m-d", filectime($baseDir . "/" . $file)) . "-$dirCounter";
|
|
if (!is_dir($dirName)) {
|
|
mkdir($dirName);
|
|
}
|
|
$dirCounter++;
|
|
$firstTime = false;
|
|
}
|
|
rename($baseDir . "/" . $file, $dirName . "/" . $file);
|
|
$counter++;
|
|
if ($counter % 1000 == 0) {
|
|
$firstTime = true;
|
|
}
|
|
// exit;
|
|
}
|
|
|
|
}
|
|
|
|
private function scan_dir($dir) {
|
|
$ignored = array(".", "..", ".svn", ".htaccess",".DS_Store");
|
|
|
|
$files = array();
|
|
foreach (scandir($dir) as $file) {
|
|
if (in_array($file, $ignored)) continue;
|
|
$files[$file] = filemtime($dir . '/' . $file);
|
|
}
|
|
|
|
asort($files);
|
|
$files = array_keys($files);
|
|
|
|
return ($files) ? $files : false;
|
|
}
|
|
|
|
public function compareLocalFilesAndGooglePhotoFiles() {
|
|
$list = scandir("/Users/shixuesen/Documents/sync/video/扛里个扛");
|
|
// $list = [];
|
|
// $list = array_merge($list, scandir("/Volumes/desktop-81dpan3/pcSync/china_cam/china_cam_001"));
|
|
$photoList = [
|
|
"【扛里个扛】Deep Blue Town 可以带我玩嘛(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄.mp4",
|
|
"Dumb!同校学姐跳起舞来竟然变这样…….mp4",
|
|
"Hello!How are you【7周年纪念】 P1 2021年的扛扛.mp4",
|
|
"Hello!How are you【7周年纪念】 P2 2015年的扛扛.mp4",
|
|
"Hello!baby!要抱抱!【竖屏】.mp4",
|
|
"I’m Not Cool【扛里个扛】真·大姐姐 P1 I’M NOT COOL.mp4",
|
|
"I’m Not Cool【扛里个扛】真·大姐姐 P2 IM NOT COOL竖屏.mp4",
|
|
"MAMAMOO♥AYA嗷~~ P1 不一样的比例.mp4",
|
|
"MAMAMOO♥AYA嗷~~ P2 竖屏.mp4",
|
|
"Twilight♖当代另类个性女团,高矮胖瘦美【起风组】 P1 排练录舞比赛必刮风组合.mp4",
|
|
"Twilight♖当代另类个性女团,高矮胖瘦美【起风组】 P2 神圣光芒阿卡贝拉.mp4",
|
|
"hotissue💥穿高跟鞋真的很难扭【竖屏】.mp4",
|
|
"【原创振付】给十年后的你✿才不是呢~另附现场.avi P1 现场.avi.mp4",
|
|
"【原创振付】给十年后的你✿才不是呢~另附现场.avi P2 寒冬腊月の你.mp4",
|
|
"【扛扛Teresa】麻烦鬼♡最讨厌麻烦了....mp4",
|
|
"【扛扛影纸】『 四月是你的谎言OP 』 ﹏果然选择你真是太好了❀( ▽ )❀.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P1 cosplay舞台剧合集(空降地址在评论).mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P10 【东京泰迪熊】.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P11 【枪娘】五人走位修改团体版.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P12 【罗密欧与辛德瑞拉x only my railgun】宅舞第一.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P13 【 poison kiss】西服三人版.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P14 【bar bar bar】某次年会.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P15 【 12fanclub】15年长春宅舞比赛.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P16 【宵宵古今】单人版 沈阳DA嘉宾表演.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P2 【绯色月下、狂咲ノ绝】原创振付 病娇.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P3 【宵宵古今+神乐】PDM亚洲宅舞大赛场起风组.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P4 【来起舞吧】17年6月东北总决赛第二 大连第一.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P5 【tokio funka】吸血姬COS.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P6 【Girls Lamb 枪娘】沈阳西漫嘉宾表演.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P7 2015年现场即兴舞蹈.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P8 【tanataro】百合 现场版.mp4",
|
|
"【扛里个扛】818这些年我出过的cos舞台剧和宅舞舞台 P9 【10年後の君へ 】原创编舞 百合.mp4",
|
|
"【扛里个扛】AOA❤动摇,已经无法再随心所欲.mp4",
|
|
"【扛里个扛】Abracadabra❤姨母团的傲慢舞.mp4",
|
|
"【扛里个扛】CLC-LIke it❤双面的快乐 P1 好像是掉帧的双面快乐.mp4",
|
|
"【扛里个扛】CLC-LIke it❤双面的快乐 P2 好象是不掉帧的双面快乐.mp4",
|
|
"【扛里个扛】DUDUDU♥不一样的旗袍风.mp4",
|
|
"【扛里个扛】EXID♥Hot Pink◎.mp4",
|
|
"【扛里个扛】HELICOPTER♥.mp4",
|
|
"【扛里个扛】Hip▷MAMAMOO (微笑 P1 各种分镜横屏.mp4",
|
|
"【扛里个扛】Hip▷MAMAMOO (微笑 P2 固定机位竖屏版.mp4",
|
|
"【扛里个扛】Hysteric Bullet☠哪种方法,你选一个.mp4",
|
|
"【扛里个扛】ICE ICE超冰超辣,性感小野马! P1 金泫雅-ICEICE.mp4",
|
|
"【扛里个扛】ICE ICE超冰超辣,性感小野马! P2 竖屏.mp4",
|
|
"【扛里个扛】Kill this love 柬埔寨少女在线葬爱.mp4",
|
|
"【扛里个扛】LATATA❤竖屏❤让这个夜晚燃烧起来吧!.mp4",
|
|
"【扛里个扛】Love Me If You Can.mp4",
|
|
"【扛里个扛】POP STARS,新版本御姐风!!.mp4",
|
|
"【扛里个扛】PRISTIN周洁琼❤«Get itℑ».mp4",
|
|
"【扛里个扛】Produce48-Rumor✿说爱你 P1 广场舞音源.mp4",
|
|
"【扛里个扛】Produce48-Rumor✿说爱你 P2 正经音源.mp4",
|
|
"【扛里个扛】RIVER,鬼节废墟作死系列.mp4",
|
|
"【扛里个扛】Re:从零开始的异世界生活ED❤STYX HELIX.mp4",
|
|
"【扛里个扛】So Crazy☆T-ARA,为什么说我是只小狐狸? P1 脚滑的横屏.mp4",
|
|
"【扛里个扛】So Crazy☆T-ARA,为什么说我是只小狐狸? P2 脚不滑腿也正常了的竖屏.mp4",
|
|
"【扛里个扛】Sorry not sorry 差点超还原翻跳△ P1 我是挺正经的正片.mp4",
|
|
"【扛里个扛】Sorry not sorry 差点超还原翻跳△ P2 我是竖屏.mp4",
|
|
"【扛里个扛】Sorry not sorry 差点超还原翻跳△ P3 我也是挺正经的OS.mp4",
|
|
"【扛里个扛】T-ARA❤NO.9,超高冷!.mp4",
|
|
"【扛里个扛】T-ara❤Day by day.mp4",
|
|
"【扛里个扛】Taki Taki♕.mp4",
|
|
"【扛里个扛】Twilight👑.mp4",
|
|
"【扛里个扛】Wiggle Wiggle❤.mp4",
|
|
"【扛里个扛】something❤Girls Day P1 各种走位版.mp4",
|
|
"【扛里个扛】something❤Girls Day P2 竖屏版.mp4",
|
|
"【扛里个扛】“双胞胎”的 I My Me Mine.mp4",
|
|
"【扛里个扛】“双胞胎老师”的Girls,你更喜欢哪一个❤.mp4",
|
|
"【扛里个扛】☯马步谣☯楚留香手游同人舞【原创编舞】.mp4",
|
|
"【扛里个扛】一首红(hei)昭愿,为您网络一线牵.mp4",
|
|
"【扛里个扛】佛系燃烧卡路里!!.mp4",
|
|
"【扛里个扛】你真的对我没感觉吗?.mp4",
|
|
"【扛里个扛】全 程 高 唐 P1 逆水寒-高唐.mp4",
|
|
"【扛里个扛】全 程 高 唐 P2 有BUG的定机位.mp4",
|
|
"【扛里个扛】好乐Day.mp4",
|
|
"【扛里个扛】宣美-Siren.mp4",
|
|
"【扛里个扛】宣美♡Gashina.mp4",
|
|
"【扛里个扛】少女时代-Catch me if you can✨.mp4",
|
|
"【扛里个扛】御姐风的晴天好心情,没错!这才是真正的我!.mp4",
|
|
"【扛里个扛】无意义文學▷ドクドクドク.mp4",
|
|
"【扛里个扛】是你没见过的Chica.mp4",
|
|
"【扛里个扛】来跟老师读不~要~啊❤.mp4",
|
|
"【扛里个扛】歪头福利❤罗密欧与辛德瑞拉.mp4",
|
|
"【扛里个扛】每天都要来一遍的Up&Down.mp4",
|
|
"【扛里个扛】滴!这里有一份组队申请注意查收!.mp4",
|
|
"【扛里个扛】王蓉-要抱抱.mp4",
|
|
"【扛里个扛】鬼畜版·学猫叫【全明星阵容喵?】 P1 鬼畜版.mp4",
|
|
"【更新到Siren】竖屏合集 P1 GASHINA竖屏.mp4",
|
|
"【更新到Siren】竖屏合集 P2 siren 竖屏.mp4",
|
|
"【更新到Siren】竖屏合集 P3 girls 竖屏.mp4",
|
|
"【月亮❄扛扛】一舞晴川雪,一眼惹惊鸿【古风原创编舞】 P1 银临 - 晴川雪.mp4",
|
|
"【桥肯x扛扛】Love me if you can△确定过眼神,我们是姐妹.mp4",
|
|
"【横屏全身】你喷的火~是我的造型.mp4",
|
|
"【竖屏&绝美特写】NICE BODY【4K】 P1 特写.mp4",
|
|
"【竖屏&绝美特写】NICE BODY【4K】 P2 竖屏.mp4",
|
|
"【竖屏】JK辣妹♥HOW YOU LIKE THAT!?.mp4",
|
|
"【竖屏】Nobody能拒绝的快乐.mp4",
|
|
"【竖屏】SIGN♥褐眼女孩,给大家表演个脖子以下都是腿(误 P1 好像是个4K.mp4",
|
|
"【竖屏】SIGN♥褐眼女孩,给大家表演个脖子以下都是腿(误 P2 封面风格没有分镜.mp4",
|
|
"【竖屏】今夜不让你入睡☠twilight♥短发病娇.mp4",
|
|
"【竖屏】这次不许跟扛老师学Thumbs Up【扛里个扛】.mp4",
|
|
"三 倍 的 快 乐.mp4",
|
|
"不给糖?那扛老师就捣乱你的心.mp4",
|
|
"与你暧昧不清的竖屏,喜欢吗? P1 跟横屏一毛一样的带特写竖屏.mp4",
|
|
"与你暧昧不清的竖屏,喜欢吗? P2 看舞蹈的竖屏.mp4",
|
|
"两 个 女 仆 分 别 如 何 使 用 ?❤️Tara-Sexy Love 【礼礼X扛扛】.mp4",
|
|
"两个女朋友同时哭了,你哄哪个? -- 礼礼x扛扛 -- T-ara♥Cry Cry.mp4",
|
|
"互动视频是你期待的长腿姐妹的决斗.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P1 官方舞台剧《画江湖之不良人》饰演白无常cut.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P2 翻唱VAVA 4【3.18更新】.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P3 精分表演现场.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P4 年轻时唱的不咋样还假唱的现场.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P5 万神纪后羿(依然是年轻的时候).mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P6 上海美莱女王节宣传片(为什么让我小清新??).mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P7 菜鸡打戏合集【3.26更新】.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P8 暗恋桃花源话剧饰演春花【3.26更新】.mp4",
|
|
"你们不知道的扛老师【超多分P预警 看到赚到】 P9 干饭人打拳合集【3.26更新】.mp4",
|
|
"你喷的火 是我的造型.mp4",
|
|
"别进来,我怕你忍不住……想三连【PRISTIN- GET IT】 P2 横屏.mp4",
|
|
"加倍傲慢的扭胯舞⚠abracadabra ⚠这 次 气 场 全 开⚠.mp4",
|
|
"原来所谓爱情,是这模样.mp4",
|
|
"反正你都不来看的短裙,嘤【背面视角竖屏】 P1 MINISKRIT正面竖屏.mp4",
|
|
"反正你都不来看的短裙,嘤【背面视角竖屏】 P2 MINISKIRT 背面竖屏.mp4",
|
|
"变胖扛姑娘的眼泪.mp4",
|
|
"和妹妹跳兔子舞【扛里个扛】.mp4",
|
|
"嗯?为什么每夜都不来看我.mp4",
|
|
"垫底JK辣妹❤HOW YOU LIKE THAT【扛里个扛】.mp4",
|
|
"复古女王风♡Queen Bee【扛里个扛】.mp4",
|
|
"女 友 的 撒 娇 邀 请.mp4",
|
|
"如果用怀旧MTV风跳鬼畜鸽子舞???.mp4",
|
|
"姨母团经典扇子舞Sign P1 花里胡哨版本A.mp4",
|
|
"姨母团经典扇子舞Sign P2 纯跳没动版本B.mp4",
|
|
"完美腰臀比✨扛老师的触电挑战✨ 紧身牛仔裤+高跟鞋,你会被我电到吗?【4K竖屏】.mp4",
|
|
"客官,您可愿听我说......mp4",
|
|
"御姐up私下的真实模样【十万粉银牌开箱】.mp4",
|
|
"御姐的可爱,最为致命【NICE BODY】.mp4",
|
|
"怨妇风氛围感拉满❤为什么我每夜都在想你.mp4",
|
|
"您的长腿女仆为您定制了一份爱,请进来三连.mp4",
|
|
"愚人节没人来找你表白? 那我来【senorita】 P1 徐穗珍版Senorita.mp4",
|
|
"愚人节没人来找你表白? 那我来【senorita】 P2 现场即兴senorita.mp4",
|
|
"我 骂 我 自 己.mp4",
|
|
"我只想你陪伴❤company【扛里个扛】.mp4",
|
|
"我这样哭.....你是不是就可以早点回家.........mp4",
|
|
"我这样哭.....你是不是就可以早点回家.......【CRYCRY竖屏】..mp4",
|
|
"有没有一种可能,我是说可能,在这十字街头......mp4",
|
|
"来跟扛老师学~UP&DOWN!!.mp4",
|
|
"来跟扛老师看💗up&down【竖屏】.mp4",
|
|
"没有你,穿短裙还有什么用 P1 AOA MINISKIRT.mp4",
|
|
"没有你,穿短裙还有什么用 P2 背面竖屏预告.mp4",
|
|
"活动作品172长腿高颜值❤少女时代 - Mr.Taxi【夏x竹x须x扛x楷】 P1 Mr.TAXI导出4k.mp4",
|
|
"活动作品172长腿高颜值❤少女时代 - Mr.Taxi【夏x竹x须x扛x楷】 P2 其实还没练熟的固定机位练习室.mp4",
|
|
"活动作品Dumb!同校学姐跳起舞来竟然变这样…….mp4",
|
|
"活动作品I’m Not Cool【扛里个扛】真·大姐姐 P1 I’M NOT COOL.mp4",
|
|
"活动作品MAMAMOO♥AYA嗷~~ P1 不一样的比例.mp4",
|
|
"活动作品Twilight♖当代另类个性女团,高矮胖瘦美【起风组】 P1 排练录舞比赛必刮风组合.mp4",
|
|
"活动作品【扛里个扛】Twilight👑.mp4",
|
|
"活动作品【扛里个扛】一首红(hei)昭愿,为您网络一线牵.mp4",
|
|
"活动作品【扛里个扛】全 程 高 唐 P1 逆水寒-高唐.mp4",
|
|
"活动作品【扛里个扛】是你没见过的Chica.mp4",
|
|
"活动作品【扛里个扛】滴!这里有一份组队申请注意查收!.mp4",
|
|
"活动作品【竖屏&绝美特写】NICE BODY【4K】 P1 特写.mp4",
|
|
"活动作品【竖屏&绝美特写】NICE BODY【4K】 P2 竖屏.mp4",
|
|
"活动作品【竖屏】这次不许跟扛老师学Thumbs Up【扛里个扛】.mp4",
|
|
"活动作品三 倍 的 快 乐.mp4",
|
|
"活动作品你们不知道的扛老师【超多分P预警 看到赚到】 P1 官方舞台剧《画江湖之不良人》饰演白无常cut.mp4",
|
|
"活动作品变胖扛姑娘的眼泪.mp4",
|
|
"活动作品复古女王风♡Queen Bee【扛里个扛】.mp4",
|
|
"活动作品如果用怀旧MTV风跳鬼畜鸽子舞???.mp4",
|
|
"活动作品姨母团经典扇子舞Sign P1 花里胡哨版本A.mp4",
|
|
"活动作品对不起,我不是美女.mp4",
|
|
"活动作品御姐up私下的真实模样【十万粉银牌开箱】.mp4",
|
|
"活动作品我能如此对你吗?T-ara TIKI TAKA 【佟x跑x沐x扛】.mp4",
|
|
"活动作品讨厌!!!讨厌!!!!讨厌!!!! 我想要被你爱啊!!!!! P2 纯舞蹈.mp4",
|
|
"活动作品震惊!不良人的舞台剧演员竟然开演前在后台做这种事!!!【VLOG】 P1 《画江湖之不良人夺梦篇》.mp4",
|
|
"渣女吊带袜,拽到你趴下 -- HELLO BI+CHES P1 嗨 我是剪辑版.mp4",
|
|
"特 工 女 友 ,使 命 必 达.mp4",
|
|
"表 情 管 理 教 科 书.mp4",
|
|
"讨厌!!!讨厌!!!!讨厌!!!! 我想要被你爱啊!!!!! P1 接受我吧 这才是你.mp4",
|
|
"讨厌!!!讨厌!!!!讨厌!!!! 我想要被你爱啊!!!!! P3 这次只是个预告.mp4",
|
|
"赌上舞见名誉的!超耐久60分钟随机舞蹈!!【扛里个扛】 P2 从UP&DOWN开始的音轨不对.mp4",
|
|
"这么凶的见过没?【MARIA】.mp4",
|
|
"这次不许跟扛老师学哦~ 【Thumbs Up】.mp4",
|
|
"酷女孩的皮衣吊带袜,根本没在怕!【chica竖屏】.mp4",
|
|
"震惊!不良人的舞台剧演员竟然开演前在后台做这种事!!!【VLOG】 P1 《画江湖之不良人夺梦篇》.mp4",
|
|
"震惊!不良人的舞台剧演员竟然开演前在后台做这种事!!!【VLOG】 P2 不良猫做的版本.mp4",
|
|
"震惊!不良人的舞台剧演员竟然开演前在后台做这种事!!!【VLOG】 P3 易星秀做的版本.mp4",
|
|
"风月 ❤客官您可愿听我说这故事……【扛里个扛】.mp4",
|
|
"骁!气!十!足!.mp4"];
|
|
|
|
// $this->deleteFileListWithDir($photoList, "/Volumes/desktop-81dpan3/pcSync/china_cam/china_cam_001/");
|
|
dump(array_diff($list, $photoList));
|
|
}
|
|
|
|
public function deleteFilesForExtensions($dir, array $extensions)
|
|
{
|
|
if (!is_dir($dir)) {
|
|
return;
|
|
}
|
|
$files = scandir($dir);
|
|
foreach ($files as $file) {
|
|
$currentItem = implode(DIRECTORY_SEPARATOR, [$dir, $file]);
|
|
if (is_dir($currentItem)) {
|
|
$this->deleteFilesForExtensions($currentItem, $extensions);
|
|
}
|
|
if (is_file($currentItem)) {
|
|
$pathinfo = pathinfo($currentItem);
|
|
if (in_array($pathinfo[PATHINFO_EXTENSION], $extensions)) {
|
|
dump("now delete file $currentItem");
|
|
unlink($currentItem);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public function renameFileExtensionToAnother($dir, $fromExtension, $toExtension)
|
|
{
|
|
if (!is_dir($dir)) {
|
|
return;
|
|
}
|
|
$files = scandir($dir);
|
|
foreach ($files as $file) {
|
|
$currentItem = implode(DIRECTORY_SEPARATOR, [$dir, $file]);
|
|
if (is_dir($currentItem)) {
|
|
$this->renameFileExtensionToAnother($currentItem, $fromExtension, $toExtension);
|
|
}
|
|
if (is_file($currentItem)) {
|
|
$pathInfo = pathinfo($currentItem);
|
|
if ($pathInfo[PATHINFO_EXTENSION] == $fromExtension) {
|
|
dump("now rename file $currentItem");
|
|
rename($currentItem, str_replace($fromExtension, $toExtension, $currentItem));
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public function copySelectedFilesToMappedDirectory(array $sourceToDestMap)
|
|
{
|
|
foreach ($sourceToDestMap as $sourceDir => $destDir) {
|
|
$lastTime = $this->processDirAndFindLastFileMTime($destDir);
|
|
$this->deleteFilesInDir($destDir);
|
|
$list = $this->queryNewerFilesInDirectory($sourceDir, strtotime($lastTime));
|
|
$this->copyFileToDest($destDir, $list);
|
|
// dump($list);
|
|
|
|
}
|
|
}
|
|
|
|
public function queryNewerFilesInDirectory($dir, $lastTime)
|
|
{
|
|
$list = [];
|
|
if (!is_dir($dir)) {
|
|
return $list;
|
|
}
|
|
$files = scandir($dir);
|
|
foreach ($files as $file) {
|
|
if ($file == "." || $file == ".." || $file == ".DS_Store") {
|
|
continue;
|
|
}
|
|
$currentItem = implode(DIRECTORY_SEPARATOR, [$dir, $file]);
|
|
if (is_dir($currentItem)) {
|
|
$list = array_merge($list, $this->queryNewerFilesInDirectory($currentItem, $lastTime));
|
|
} else if (is_file($currentItem)) {
|
|
if (filemtime($currentItem) > $lastTime) {
|
|
$list[] = $currentItem;
|
|
}
|
|
}
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
|
|
/**
|
|
* 找出文件夹里的最新的的文件
|
|
* @param $destDir
|
|
* @return false|string
|
|
*/
|
|
public function processDirAndFindLastFileMTime($destDir)
|
|
{
|
|
$date = new DateTime("last year");
|
|
$date = $date->format("Y-m-d H:i:s");
|
|
if (!is_dir($destDir)) {
|
|
|
|
return $date;
|
|
}
|
|
$files = scandir($destDir);
|
|
foreach ($files as $file) {
|
|
if ($file == "." || $file == ".." || $file == ".DS_Store") {
|
|
continue;
|
|
}
|
|
$currentItem = implode(DIRECTORY_SEPARATOR, [$destDir, $file]);
|
|
if (is_dir($currentItem)) {
|
|
$currentTime = $this->processDirAndFindLastFileMTime($currentItem);
|
|
} else {
|
|
$currentTime = date("Y-m-d H:i:s", filemtime($currentItem));
|
|
echo $currentItem . " " . $currentTime . "\n";
|
|
}
|
|
if (strtotime($currentTime) > strtotime($date)) {
|
|
$date = $currentTime;
|
|
}
|
|
|
|
}
|
|
return $date;
|
|
}
|
|
|
|
public function deleteFilesInDir($dir)
|
|
{
|
|
if (!is_dir($dir)) {
|
|
return;
|
|
}
|
|
$files = scandir($dir);
|
|
foreach ($files as $file) {
|
|
if ($file == "." || $file == ".." || $file == ".DS_Store") {
|
|
continue;
|
|
}
|
|
$currentItem = implode(DIRECTORY_SEPARATOR, [$dir, $file]);
|
|
if (is_file($currentItem)) {
|
|
unlink($currentItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function deleteFileListWithDir($list, $prefix) {
|
|
foreach ($list as $file) {
|
|
$file = $prefix . $file;
|
|
if (is_file($file)) {
|
|
unlink($file);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function copyFileToDest($destDir, $fileList)
|
|
{
|
|
foreach ($fileList as $file) {
|
|
// $filePathInfo = pathinfo($file);
|
|
// dump($filePathInfo);
|
|
// echo pathinfo($file, PATHINFO_BASENAME);
|
|
// exit;
|
|
copy($file, $destDir . DIRECTORY_SEPARATOR . pathinfo($file, PATHINFO_BASENAME));
|
|
// exit;
|
|
// $filePathInfo[PATHINFO_DIRNAME];
|
|
}
|
|
}
|
|
}
|