时间:2021-07-01 10:21:17 帮助过:49人阅读
- <br><!--?php <BR-->$dir="/web/csp/images/test/"; <br>if(!file_exists($dir.'cache.txt')){ <br>file_put_contents($dir.'cache.txt',1); <br>file_put_contents($dir.'新建文件.txt',''); <br>}else{ <br>$num = file_get_contents($dir.'cache.txt'); <br>$num ++ ; <br>$name = '新建文件 ('.$num.').txt'; <br>file_put_contents($dir.'cache.txt',$num); <br>file_put_contents($dir.$name,''); <br>}?> <br> <br>银子童鞋重写后的 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?php <BR-->function createFile($filename, $content = '') <br>{ <br>if(file_exists($filename . '.tmp')) <br>{ <br>$num = (int) file_get_contents($filename . '.tmp') + 1; <br>$fileinfo = pathinfo($filename); <br>file_put_contents($fileinfo['filename'] . '(' . $num . ').' .$fileinfo['extension'], $content); <br>file_put_contents($filename . '.tmp', $num); <br>} <br>else <br>{ <br>file_put_contents($filename, $content); <br>file_put_contents($filename . '.tmp', 1); <br>} <br>} <br>createFile('test.txt'); <br>?> <br> <br>第三种,循环的 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?php <br--><br>$files = scandir('.'); //此代码在web根目录下写就 <br>$num = 0; <br>$str = '新建 文本文档'; <br>foreach ($files as $k=> $file) { <br>if (is_file($file) && preg_match('/(.*)\((\d+)\)\.txt/', $file, $matched)) { <br>$num = $matched[2]>$num ? $matched[2] : $num; <br>} <br>} <br>$filename = $num == 0 ? $str . '(1).txt' : $str . '(' . ($num+1) . ').txt'; <br>if (fopen($filename, 'w')) { <br>echo '成功创建文件:' . $filename; <br>} <br>?> <br> <br>以下是网友的回复:<br>1.关于第一段代码的. <br>在自动新建几个文件之后, <br>比如:现在的新建出来的文件有 <br>新建文件.txt <br>新建文件 (2).txt <br>新建文件 (3).txt <br>这三个文件,如果这个时候删除了 <br>新建文件 (2).txt <br>新建文件 (3).txt <br>这两个,然后再执行那个PHP,因为Cache.txt计数的问题,再执行的时候新建的文件是 <br>新建文件 (4).txt <br>并没有智能的根据序列创建. <br>而上面的操作,在Windows下的结果 新建出来的文件名应该是 <br>新建文件 (2).txt <br><br>2.关于第二段的. <br>首先,肯定也存在上面的问题,而更为严重的是,创建出来的文件,文件名与扩展名的 . 分隔符丢了.. <br>即: <br>test.txt <br>test(2)txt <br>test(3)txt <br>test(4)txt <br>究其原因是因为,在组合文件名的时候.没有把扩展名的点给加上去. <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$fileinfo['extension'], $content); <br> <br><br>来段更好玩的,更短的. <br>效率应该会比上面的使用缓存(tmp文件)或者正则(preg_match)的好很多. <br><u></u> 代码如下:<br><!--?php <BR-->$prefix = '新建 文本文档'; <br>$suffix = '.txt'; <br>$t = $prefix.$suffix;//新建 文本文档.txt <br>$i = 1; <br>while(file_exists($t)){//新建 文本文档(\d+).txt <br>$t = $prefix.'('.++$i.')'.$suffix; <br>} <br>fclose(fopen($t, 'w')); <br>?> </li></ol></pre></li></ol></pre></li></ol></pre>