PHP文件編程

1 得到文件信息

1.1 第一種方式

<?php
$file_path = './test.txt';

$handle = fopen($file_path, 'r');		// 打開文件或者 URL
$file_info_arr = fstat($handle);		// 經過已打開的文件指針取得文件信息,返回一個數組
echo '文件的大小爲:' . $file_info_arr['size'] . '<br>';
echo '文件的建立時間爲:' . date('Y-m-d H:i:s', $file_info_arr['ctime']) . '<br>';
echo '文件的訪問時間爲:' . date('Y-m-d H:i:s', $file_info_arr['atime']) . '<br>';
echo '文件的修改時間爲:' . date('Y-m-d H:i:s', $file_info_arr['mtime']) . '<br>';

1.2 第二種方式

<?php
$file_path = './test.txt';

if(file_exists($file_path)){
	echo '文件的大小爲:' . filesize($file_path) . '<br>';
	echo '文件的類型爲:' . filetype($file_path) . '<br>';
	echo '文件的建立時間爲:' . date('Y-m-d H:i:s', filectime($file_path)) . '<br>';
	echo '文件的訪問時間爲:' . date('Y-m-d H:i:s', fileatime($file_path)) . '<br>';
	echo '文件的修改時間爲:' . date('Y-m-d H:i:s', filemtime($file_path)) . '<br>';
}else{
	echo '文件不存在或文件路徑有誤';
}

2 讀取文件的四種方式

2.1 第一種方式

<?php
$file_path = './test.txt';
// 一次性讀取文件全部內容
if(file_exists($file_path)){
	$handle = fopen($file_path, 'r');
	$file_size = filesize($file_path);
	if($file_size != 0){
		$file_content = fread($handle, $file_size);		// 讀取文件
		echo $file_content;
	}else{
		echo '對不起,文件的大小爲0,沒有內容';
	}
	fclose($handle);
}else{
	echo '文件不存在或文件的信息有誤';
}

2.2 第二種方式

<?php
$file_path = './test.txt';
if(file_exists($file_path)){
	$handle = fopen($file_path, 'r');
	$file_size = filesize($file_path);

	$buffer = 512;									// 設置緩衝大小
	$file_content = '';
	while(!feof($handle)){
		$file_content .= fread($handle, $buffer);
	}

	echo $file_content;
	fclose($handle);
}else{
	echo '文件不存在或路徑有誤';
}

2.3 第三種方式

$file_path = './test.txt';
if(file_exists($file_path)){
	$file_content = file_get_contents($file_path);
	echo $file_content;
}else{
	echo '文件不存在,或路徑有誤';
}

2.4 第四種方式

<?php
$file_path = 'test.ini';
if(file_exists($file_path)){
	$file_content_arr = parse_ini_file($file_path);
	var_dump($file_content_arr);
}else{
	echo '文件不存在或文件路徑有誤';
}

3 寫入內容

3.1 第一種方式fwrite()

<?php
$file_path = 'test.txt';
$handle = fopen($file_path, 'a+');
fwrite($handle, 'ABC! ENGLISH');
fclose($handle);
echo '寫入成功';

3.2 第二種方式file_put_contents()

<?php
$file_path = 'message.txt';
$result = file_put_contents($file_path, '哥們兒,手頭緊嗎?', FILE_APPEND);		// 第三個參數默認是覆蓋寫,FILE_APPEND是追加寫

4 重命名文件

<?php
$file_path = 'message.txt';
$new_file_path = '留言板.txt';
$new_file_path = iconv('utf-8', 'gbk', $new_file_path);
if(file_exists($file_path)){
	if(rename($file_path, $new_file_path)){
		echo '文件重命名成功!';
	}else{
		echo '文件重命名失敗!';
	}	
}else{
	echo '文件不存在!';
}

5 拷貝文件

<?php
$file_path = 'message.txt';
if(file_exists($file_path)){
	$new_file_path = 'D:/www/留言板.txt';
	$new_file_path = iconv('utf-8', 'gbk', $new_file_path);

	if(copy($file_path, $new_file_path)){
		echo '拷貝成功';
	}else{
		echo '拷貝失敗';
	}
}else{
	echo '文件不存在';
}

6 刪除文件

<?php
$file_path = 'message.txt';
if(file_exists($file_path)){
	if(unlink($file_path)){		// 刪除文件
		echo '刪除成功!';
	}else{
		echo '刪除失敗!';
	}
}else{
	echo '文件不存在';
}

7 建立目錄

<?php
$dir = 'D:/test';
if(!is_dir($dir)){
	if(mkdir($dir)){
		echo '建立目錄成功';
	}else{
		echo '建立目錄失敗';
	}
}else{
	echo '目錄已經存在,無需建立!';
}

若是咱們要建立子目錄的話,須要藉助mkdir的後面的兩個參數php

<?php
$date = date('Ymd');
$dir = 'D:/test/demo' . $date;
if(!is_dir($dir)){
	if(mkdir($dir, 0777, true)){
		echo '目錄建立成功!';
	}else{
		echo '目錄建立失敗!';
	}
}else{
	echo '目錄已經存在,無需建立!';
}

8 刪除目錄

<?php
$date = date('Ymd');
$dir = 'D:/test/demo/' . $date;
if(is_dir($dir)){
	if(rmdir($dir)){
		echo '刪除目錄成功!';
	}else{
		echo '刪除目錄失敗!';
	}
}else{
	echo '不是一個目錄或目錄不存在,沒法刪除';
}

9 遍歷目錄

<?php
$dir = 'D:/test';
if(is_dir($dir)){
	$dir_handle = opendir($dir);	// 打開目錄句柄
	while($file = readdir($dir_handle)){		// 從目錄句柄中讀取條目, 成功則返回文件名 或者在失敗時返回 FALSE 
		echo $file . '<br>';
	}
	closedir($dir_handle);			// 關閉目錄句柄
}else{
	echo '不是目錄';
}

10 自定義一個函數,實現parse_ini_file()函數功能

 

代碼以下:html

<?php
function my_parse_ini_file($file_path){
	// 判斷文件是否存在
	if(file_exists($file_path)){
		$file_handle = fopen($file_path, 'r');

		while($line = fgets($file_handle)){
			$line = str_replace('', '', $line);
			$line = str_replace("\r\n", '', $line);

			$arr = explode('=', $line);
			$result[$arr[0]] = $arr[1];
		}
		return $result;
	}else{
		echo '文件不存在,或文件的路徑有誤';
	}
}

$result = my_parse_ini_file('test.ini');
echo '<pre>';
var_dump($result);

結果以下:數組

array(2) {
  ["load"]=>
  string(7) "loading"
  ["li"]=>
  string(5) "zhang"
}

11 編寫一個程序,具體要求以下圖:

image

<?php
$year = date('Y');
$month = date('md');

$full_dir = 'D:/' . $year . '/' . $month;
if(!is_dir($full_dir)){
	mkdir($full_dir, 0777, true);
}

$file_path = $full_dir . '/abc.txt';
$file_handle = fopen($file_path, 'w+');

$content = '';
for($i=0; $i<100; $i++){
	$content .= 'helloworld' . "\r\n";
}

fwrite($file_handle, $content);
fclose($file_handle);
echo '完成操做';

12 遍歷某個文件夾下的全部的文件和目錄(使用遞歸)

<?php
$dir = 'D:/2018';
function bianLi($dir){
	if(is_dir($dir)){
		$dir_handle = opendir($dir);
		while($file = readdir($dir_handle)){
			if($file == '.' || $file == '..'){
				continue;
			}
			if(is_dir($dir . '/' . $file)){
				bianLi($dir . '/' . $file);
			}
			echo $file . '------------' . filetype($dir . '/' . $file) . '<br>';
		}
	}else{
		echo '不是一個目錄,沒法遍歷';
		exit();
	}
}

bianLi($dir);

13 統計某個目錄全部文件的大小(使用遞歸)

<?php
$dir = 'D:/2018';
function getDirSize($dir){
	if(is_dir($dir)){
		$dir_handle = opendir($dir);
		static $size = 0;
		while(false !== ($file=readdir($dir_handle))){
			if($file == '.' || $file == '..'){
				continue;
			}
			if(!is_dir($dir . '/' . $file)){
				$size += filesize($dir . '/' . $file);
			}else{
				getDirSize($dir . '/' . $file);
			}
		}
	}else{
		$size = filesize($dir);
	}
	return $size;
}

$size = getDirSize($dir);
echo $size;

14 刪除某個目錄(使用遞歸)

<?php
$dir = 'D:/2018';
function removeDir($dir){
	if(is_dir($dir)){
		$dir_handle = opendir($dir);		// 打開目錄句柄
		while(false !== ($file=readdir($dir_handle))){		// 從目錄句柄中讀取條目
			if($file == '.' || $file == '..'){
				continue;
			}
			if(is_dir($dir . '/' . $file)){
				removeDir($dir . '/' . $file);
			}else{
				unlink($dir . '/' . $file);		// 刪除文件
			}
		}
		closedir($dir_handle);		// 關閉目錄句柄
		rmdir($dir . '/' . $file);	// 刪除目錄
	}else{
		unlink($dir);		// 刪除文件
	}
}

removeDir($dir);
echo '刪除成功!';
相關文章
相關標籤/搜索