php操作文件

下载文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function ( $url, $filename = '', $save_dir = '', $type = 0 ) {
if ( trim( $url ) == '' ) {
return false;
}
if ( trim( $save_dir ) == '' ) {
$save_dir = './';
}
if ( 0 !== strrpos( $save_dir, '/' ) ) {
$save_dir .= '/';
}

if ( !file_exists( $save_dir ) && !mkdir( $save_dir, 0777, true ) ) {
return false;
}
//获取远程文件所采用的方法
if ( $type ) {
$ch = curl_init();
$timeout = 5;
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
$content = curl_exec( $ch );
curl_close( $ch );
} else {
ob_start();
readfile( $url );
$content = ob_get_contents();
ob_end_clean();
}
//echo $content;
$size = strlen( $content );
//文件大小
$fp2 = @fopen( $save_dir . $filename, 'a' );
fwrite( $fp2, $content );
fclose( $fp2 );
unset( $content, $url );
return array(
'file_name' => $filename,
'save_path' => $save_dir . $filename,
'file_size' => $size
);
}

解压文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
function tarFile( $file_name ) {
$buffer_size = 4096; // read 4kb at a time
$out_file_name = str_replace( '.gz', '', $file_name );

$file = gzopen( $file_name, 'rb' );
$out_file = fopen( $out_file_name, 'wb' );

while ( !gzeof( $file ) ) {
fwrite( $out_file, gzread( $file, $buffer_size ) );
}
fclose( $out_file );
gzclose( $file );
}

读取文件:

1
2
3
4
5
6
function readFile( $file_name ) {
$hander = fopen( $file_name, 'r' ) or die( "Unable to open file!" );
$str = fread( $hander, filesize( $file_name ) );
fclose( $hander );
return $str;
}