php的rename函数删文件的问题
最近做项目时遇到个奇怪问题,php的rename函数貌似会删除数字命名的文件,具体是这样的 :
如果一个文件夹中有10个文件,1.jpg - 10.jpg ,如果运行我写的这个函数,就会删除掉除1.jpg和10.jpg以外的文件,又测试了下,貌似会根据文件数量随机删一些文件,函数如下:
<code>function getFile($dir) { $dirObj = new \DirectoryIterator($dir); $file = []; $i = 1; foreach ($dirObj as $v) { if ($v->isDot() || $v->isDir()) continue; if ($v->isFile()) { $new = $i . '.' . $v->getExtension(); rename($dir . '/' . $v->getFilename(), $dir . '/' . $new); $file[] = $new; $i++; } } return $file; } </code>
环境:win7,apache 2.4.9,php 5.5.12
如果不是rename的原因,那也不应该是DirectoryIterator类的原因啊,这是运行函数前
这是运行后
回复内容:
最近做项目时遇到个奇怪问题,php的rename函数貌似会删除数字命名的文件,具体是这样的 :
如果一个文件夹中有10个文件,1.jpg - 10.jpg ,如果运行我写的这个函数,就会删除掉除1.jpg和10.jpg以外的文件,又测试了下,貌似会根据文件数量随机删一些文件,函数如下:
<code>function getFile($dir) { $dirObj = new \DirectoryIterator($dir); $file = []; $i = 1; foreach ($dirObj as $v) { if ($v->isDot() || $v->isDir()) continue; if ($v->isFile()) { $new = $i . '.' . $v->getExtension(); rename($dir . '/' . $v->getFilename(), $dir . '/' . $new); $file[] = $new; $i++; } } return $file; } </code>
环境:win7,apache 2.4.9,php 5.5.12
如果不是rename的原因,那也不应该是DirectoryIterator类的原因啊,这是运行函数前
这是运行后
你只需要跟踪一下你传递给 rename 两个参数值就知道结果了
因为这里遍历文件的时候,文件排序是
1.jpg
10.jgp
2.jpg
3.jpg
...
9.jpg
然后 rename 的时候就会变成
1.jpg -> 1.jpg
10.jpg -> 2.jpg
2.jpg -> 3.jpg
3.jpg -> 4.jpg
...
9.jpg -> 10.jpg
所以最后只剩下两个文件

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

Working with database in CakePHP is very easy. We will understand the CRUD (Create, Read, Update, Delete) operations in this chapter.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Validator can be created by adding the following two lines in the controller.
