<span>php
</span><span>
</span><span>
class
</span><span> FileUtil {
</span><span>
</span><span>
function
</span> createDir(<span>
$aimUrl
</span><span>) {
</span><span>
$aimUrl
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$aimUrl
</span><span>);
</span><span>
$aimDir
</span> =
''
<span>;
</span><span>
$arr
</span> = <span>
explode
</span>(
'/'
, <span>
$aimUrl
</span><span>);
</span><span>
$result
</span> = <span>true</span><span>;
</span><span>
foreach
</span> (<span>
$arr
</span><span>
as
</span><span>
$str
</span><span>) {
</span><span>
$aimDir
</span> .= <span>
$str
</span> .
'/'
<span>;
</span><span>
if
</span> (!<span>
file_exists
</span>(<span>
$aimDir
</span><span>)) {
</span><span>
$result
</span> = <span>
mkdir
</span>(<span>
$aimDir
</span><span>);
}
}
</span><span>
return
</span><span>
$result
</span><span>;
}
</span><span>
</span><span>
function
</span> createFile(<span>
$aimUrl
</span>, <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
if
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> == <span>false</span><span>) {
</span><span>
return
</span><span>false</span><span>;
} </span><span>
elseif
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> == <span>true</span><span>) {
FileUtil </span>:: unlinkFile(<span>
$aimUrl
</span><span>);
}
</span><span>
$aimDir
</span> = <span>dirname</span>(<span>
$aimUrl
</span><span>);
FileUtil </span>:: createDir(<span>
$aimDir
</span><span>);
</span><span>touch</span>(<span>
$aimUrl
</span><span>);
</span><span>
return
</span><span>true</span><span>;
}
</span><span>
</span><span>
function
</span> moveDir(<span>
$oldDir
</span>, <span>
$aimDir
</span>, <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
$aimDir
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$aimDir
</span><span>);
</span><span>
$aimDir
</span> = <span>
substr
</span>(<span>
$aimDir
</span>, -1) ==
'/'
? <span>
$aimDir
</span> : <span>
$aimDir
</span> .
'/'
<span>;
</span><span>
$oldDir
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$oldDir
</span><span>);
</span><span>
$oldDir
</span> = <span>
substr
</span>(<span>
$oldDir
</span>, -1) ==
'/'
? <span>
$oldDir
</span> : <span>
$oldDir
</span> .
'/'
<span>;
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$oldDir
</span><span>)) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
if
</span> (!<span>
file_exists
</span>(<span>
$aimDir
</span><span>)) {
FileUtil </span>:: createDir(<span>
$aimDir
</span><span>);
}
@ </span><span>
$dirHandle
</span> = <span>opendir</span>(<span>
$oldDir
</span><span>);
</span><span>
if
</span> (!<span>
$dirHandle
</span><span>) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
while
</span> (<span>false</span> !== (<span>
$file
</span> = <span>readdir</span>(<span>
$dirHandle
</span><span>))) {
</span><span>
if
</span> (<span>
$file
</span> ==
'.'
|| <span>
$file
</span> ==
'..'
<span>) {
</span><span>
continue
</span><span>;
}
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$oldDir
</span> . <span>
$file
</span><span>)) {
FileUtil </span>:: moveFile(<span>
$oldDir
</span> . <span>
$file
</span>, <span>
$aimDir
</span> . <span>
$file
</span>, <span>
$overWrite
</span><span>);
} </span><span>
else
</span><span> {
FileUtil </span>:: moveDir(<span>
$oldDir
</span> . <span>
$file
</span>, <span>
$aimDir
</span> . <span>
$file
</span>, <span>
$overWrite
</span><span>);
}
}
</span><span>
closedir
</span>(<span>
$dirHandle
</span><span>);
</span><span>
return
</span><span>
rmdir
</span>(<span>
$oldDir
</span><span>);
}
</span><span>
</span><span>
function
</span> moveFile(<span>
$fileUrl
</span>, <span>
$aimUrl
</span>, <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
if
</span> (!<span>
file_exists
</span>(<span>
$fileUrl
</span><span>)) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
if
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
return
</span><span>false</span><span>;
} </span><span>
elseif
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> = <span>true</span><span>) {
FileUtil </span>:: unlinkFile(<span>
$aimUrl
</span><span>);
}
</span><span>
$aimDir
</span> = <span>dirname</span>(<span>
$aimUrl
</span><span>);
FileUtil </span>:: createDir(<span>
$aimDir
</span><span>);
</span><span>rename</span>(<span>
$fileUrl
</span>, <span>
$aimUrl
</span><span>);
</span><span>
return
</span><span>true</span><span>;
}
</span><span>
</span><span>
function
</span> unlinkDir(<span>
$aimDir
</span><span>) {
</span><span>
$aimDir
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$aimDir
</span><span>);
</span><span>
$aimDir
</span> = <span>
substr
</span>(<span>
$aimDir
</span>, -1) ==
'/'
? <span>
$aimDir
</span> : <span>
$aimDir
</span> .
'/'
<span>;
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$aimDir
</span><span>)) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
$dirHandle
</span> = <span>opendir</span>(<span>
$aimDir
</span><span>);
</span><span>
while
</span> (<span>false</span> !== (<span>
$file
</span> = <span>readdir</span>(<span>
$dirHandle
</span><span>))) {
</span><span>
if
</span> (<span>
$file
</span> ==
'.'
|| <span>
$file
</span> ==
'..'
<span>) {
</span><span>
continue
</span><span>;
}
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$aimDir
</span> . <span>
$file
</span><span>)) {
FileUtil </span>:: unlinkFile(<span>
$aimDir
</span> . <span>
$file
</span><span>);
} </span><span>
else
</span><span> {
FileUtil </span>:: unlinkDir(<span>
$aimDir
</span> . <span>
$file
</span><span>);
}
}
</span><span>
closedir
</span>(<span>
$dirHandle
</span><span>);
</span><span>
return
</span><span>
rmdir
</span>(<span>
$aimDir
</span><span>);
}
</span><span>
</span><span>
function
</span> unlinkFile(<span>
$aimUrl
</span><span>) {
</span><span>
if
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span><span>)) {
</span><span>unlink</span>(<span>
$aimUrl
</span><span>);
</span><span>
return
</span><span>true</span><span>;
} </span><span>
else
</span><span> {
</span><span>
return
</span><span>false</span><span>;
}
}
</span><span>
</span><span>
function
</span> copyDir(<span>
$oldDir
</span>, <span>
$aimDir
</span>, <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
$aimDir
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$aimDir
</span><span>);
</span><span>
$aimDir
</span> = <span>
substr
</span>(<span>
$aimDir
</span>, -1) ==
'/'
? <span>
$aimDir
</span> : <span>
$aimDir
</span> .
'/'
<span>;
</span><span>
$oldDir
</span> = <span>
str_replace
</span>(
''
,
'/'
, <span>
$oldDir
</span><span>);
</span><span>
$oldDir
</span> = <span>
substr
</span>(<span>
$oldDir
</span>, -1) ==
'/'
? <span>
$oldDir
</span> : <span>
$oldDir
</span> .
'/'
<span>;
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$oldDir
</span><span>)) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
if
</span> (!<span>
file_exists
</span>(<span>
$aimDir
</span><span>)) {
FileUtil </span>:: createDir(<span>
$aimDir
</span><span>);
}
</span><span>
$dirHandle
</span> = <span>opendir</span>(<span>
$oldDir
</span><span>);
</span><span>
while
</span> (<span>false</span> !== (<span>
$file
</span> = <span>readdir</span>(<span>
$dirHandle
</span><span>))) {
</span><span>
if
</span> (<span>
$file
</span> ==
'.'
|| <span>
$file
</span> ==
'..'
<span>) {
</span><span>
continue
</span><span>;
}
</span><span>
if
</span> (!<span>
is_dir
</span>(<span>
$oldDir
</span> . <span>
$file
</span><span>)) {
FileUtil </span>:: copyFile(<span>
$oldDir
</span> . <span>
$file
</span>, <span>
$aimDir
</span> . <span>
$file
</span>, <span>
$overWrite
</span><span>);
} </span><span>
else
</span><span> {
FileUtil </span>:: copyDir(<span>
$oldDir
</span> . <span>
$file
</span>, <span>
$aimDir
</span> . <span>
$file
</span>, <span>
$overWrite
</span><span>);
}
}
</span><span>
return
</span><span>
closedir
</span>(<span>
$dirHandle
</span><span>);
}
</span><span>
</span><span>
function
</span> copyFile(<span>
$fileUrl
</span>, <span>
$aimUrl
</span>, <span>
$overWrite
</span> = <span>false</span><span>) {
</span><span>
if
</span> (!<span>
file_exists
</span>(<span>
$fileUrl
</span><span>)) {
</span><span>
return
</span><span>false</span><span>;
}
</span><span>
if
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> == <span>false</span><span>) {
</span><span>
return
</span><span>false</span><span>;
} </span><span>
elseif
</span> (<span>
file_exists
</span>(<span>
$aimUrl
</span>) && <span>
$overWrite
</span> == <span>true</span><span>) {
FileUtil </span>:: unlinkFile(<span>
$aimUrl
</span><span>);
}
</span><span>
$aimDir
</span> = <span>dirname</span>(<span>
$aimUrl
</span><span>);
FileUtil </span>:: createDir(<span>
$aimDir
</span><span>);
</span><span>
copy
</span>(<span>
$fileUrl
</span>, <span>
$aimUrl
</span><span>);
</span><span>
return
</span><span>true</span><span>;
}
}
</span>?>