<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ![](https://img.kancloud.cn/bb/97/bb9770f0c37e3d4236737e8dcd8b3ba0_461x154.png) 文件目錄如上 1、文件處理擴展包File.php ``` <?php namespace files; class File { /** * 判斷文件是否存在 * * @name f_has * @param string filename 文件路徑 * @return bool */ public function f_has($filename = '') { $is = is_file($filename); return $is ? 1 : 0; } /** * 判斷文件夾是否存在 * * @name d_has * @param string dir 目錄 * @return bool */ public function d_has($dir = '') { $is = is_dir($dir); return $is ? 1 : 0; } /** * 創建目錄 * * @name d_create * @param string dir 目錄 * @return bool */ public function d_create($dir = '') { if (!$dir || $dir == "." || $dir == "./") return true; if (!$this -> d_has($dir)) { $is = mkdir($dir, 0777, true); return $is ? 1 : 0; } return 1; } /** * 文件寫入 * * @name write * @param string filename 文件路徑 * @param string data 文件中要寫入的內容 * @return bool */ public function write($filename = '', $data = '') { $pathinfo = pathinfo($filename); $dir = $pathinfo['dirname']; $file = $pathinfo['basename']; if (!$this->d_has($dir)) { mkdir($dir, 0777, true); } $is = file_put_contents($filename, $data); return $is ? 1 : 0; } /** * 文件讀取 * * @name read * @param string filename 文件路徑 * @return string */ public function read($filename = '') { if ($this->f_has($filename)) { $content = file_get_contents($filename); return $content; } else { return ''; } } /** * 讀取文件內容,將讀取的內容放入數組中,每個數組元素為文件的一行,內容包括換行 * * @name read_array * @param string filename 文件路徑 * @return array */ public function read_array($filename = "") { if ($this->f_has($filename)) { return file($filename); } else { return array(); } } public function read_line_trim($filename = "", $tp = "#", $line_size = '1024') { $arr_ = []; if ($this->f_has($filename)) { $handle = fopen($filename, "r"); while (!feof ($handle)) { $buffer = fgets($handle, $line_size); $f_str = trim($buffer); if (!empty($f_str) && substr($f_str, 0, 1 ) != $tp) { array_push($arr_,$f_str); } } fclose($handle); } return $arr_; } /** * 文件刪除 * * @name f_delete * @param string filename 文件路徑 * @return array */ public function f_delete($filename = "") { if ($this -> f_has($filename)) { return @unlink($filename); } } /** * 文件夾刪除 * * @name d_delete * @param string filename 文件路徑 * @return array */ public function d_delete($dir = "") { // 先刪除目錄下的文件: if (!$this->d_has($dir)) return true; $dh = opendir($dir); while ($file = readdir($dh)) { if ($file != "." && $file != "..") { $fullpath = $dir . DIRECTORY_SEPARATOR . $file; if (!is_dir($fullpath)) { @unlink($fullpath); } else { $this -> d_delete($fullpath); } } } closedir($dh); // 刪除當前文件夾: if (rmdir($dir)) { return true; } else { return false; } } /** * 拷貝文件或目錄 * * @name copy_ * @param string $new 拷貝目錄或者文件 * @param string $old 目標目錄或者文件 * @param $type $type 0為刪除拷貝目錄 1為不刪除拷貝目錄 * @return bool */ public function copy_($new, $old, $type = 1) { $is = false; if (!file_exists($old) && !is_dir($old)) return false; $pathinfo_new = pathinfo($new); $path = isset($pathinfo_new['extension']) ? $pathinfo_new['dirname'] : $new; if (!is_dir($path)) mkdir($path, 0777, true); if (is_file($old)) { if (!isset($pathinfo_new['extension'])) { $pathinfo = pathinfo($old); $is = copy($old, $new . DIRECTORY_SEPARATOR . $pathinfo['basename']); } else { $is = copy($old, $new); } } else { if (!isset($pathinfo_new['extension'])) { $dir = scandir($old); foreach ($dir as $filename) { if (!in_array($filename, array('.', '..'))) { if (is_dir($old . DIRECTORY_SEPARATOR . $filename)) { $is = $this -> copy_($new . DIRECTORY_SEPARATOR . $filename, $old . DIRECTORY_SEPARATOR . $filename, $type); if (!$is) return false; continue; } else { $is = copy($old . DIRECTORY_SEPARATOR . $filename, $new . DIRECTORY_SEPARATOR . $filename); } } } } } return $is; } /** * 獲取目錄下的所有文件路勁 包括子目錄的文件 * * @name get_all_dir * @param string dir 文件夾路徑 * @return array */ public function get_all_dir($dir) { $result = array(); $handle = opendir($dir); if ($handle) { while (($file = readdir($handle)) !== false) { if ($file != '.' && $file != '..') { $cur_path = $dir . DIRECTORY_SEPARATOR . $file; if (is_dir($cur_path)) { $files = $this -> get_all_dir($cur_path); if ($files) $result = $result ? array_merge($result, $files) : $files; } else { $result[] = $cur_path; } } } closedir($handle); } return $result; } /** * 判斷文件或者文件夾是否有對象權限 * * @name is_write * @param string $file 文件或者文件夾路徑 * @return int */ function is_write($file) { $pathinfo = pathinfo($file); $dir = $pathinfo['dirname']; $extension = isset($pathinfo_new['extension']) ? $pathinfo_new['extension'] : NULL; if ($extension) { $is = $this -> write($file); return $is ? 1 : 0; } else { $filename = substr($file, 0, 1) == "/" ? $file . "is_write_000000123456789.txt" : $file . DIRECTORY_SEPARATOR . "is_write_000000123456789.txt"; $is = $this -> write($filename, 'OK'); if ($is) { $this -> f_delete($filename); return 1; } else { return 0; } } } } ``` 2、壓縮包處理擴展包Zip.php ``` <?php namespace files; class Zip { /** * 初始化函數 * * @name __construct * @return void */ public function __construct() { $this->zip = new \ZipArchive(); $this->F = new \files\File(); } /** * 壓縮單個文件 * * @name add_file * @param string $filename 被壓縮的文件 * @param string filename_zip 在壓縮文件中的文件名稱,如果不設置為壓縮文件的名稱,默認不設置 * @return int 1 or 0 */ public function add_file($filename, $filename_zip = null) { if ($filename_zip) { $is = $this->zip->addFile($filename, $filename_zip); } else { $is = $this->zip->addFile($filename); } return $is ? 1 : 0; } /** * 壓縮整個目錄 * * @name zip * @param string $dir 壓縮目錄路徑 * @param string $zipfilename 壓縮文件的文件名,包括路徑 * @return int 1 or 0 */ public function zip($dir, $zipfilename = 'zip.zip') { $pathinfo = pathinfo($zipfilename); if ($this->F->d_create($pathinfo['dirname'])) { // ZipArchive::OVERWRITE 如果文件存在則覆蓋 if ($this->zip->open($zipfilename, \ZipArchive::CREATE) === TRUE) { $this->createZip($dir); } return $this->zip->close(); } return 0; } /** * 解壓縮文件 * * @name unzip * @param string $zipfilename 解壓縮的文件 * @param string $path 解壓縮后的路徑 * @return int 1 or 0 */ public function unzip($zipfilename = 'zip.zip', $path = '') { if ($this->zip->open($zipfilename) === true) { $file_tmp = @fopen($zipfilename, "rb"); // 只讀15字節 各個不同文件類型,頭信息不一樣。 $bin = fread($file_tmp, 15); fclose($file_tmp); // 只針對zip的壓縮包進行處理 if (true === $this->getTypeList($bin)) { $result = $this->zip->extractTo($path); $this->zip->close(); return $result ? 1 : 0; } else { return 0; } } return 0; } /** * 添加目錄到zip對象 * * @name createZip * @param string $dir 壓縮目錄路徑 * @param string $parent 上級目錄 * @return int */ public function createZip($dir, $parent = null) { $handle = opendir($dir); if ($handle) { try { while ( ( $file = readdir ( $handle ) ) !== false ) { if ( $file != '.' && $file != '..') { $cur_path = $dir . DIRECTORY_SEPARATOR . $file; if ( is_dir ( $cur_path ) ) { $parentParam = $parent ? $parent . "/" . $file : $file; $this->createZip($cur_path, $parentParam); } else { $filename_zip = $parent ? $parent . "/" . $file : $file; $this->add_file($cur_path, $filename_zip); } } } closedir($handle); return 1; } catch(\Exception $e) { return 0; } } } /** * 獲取壓縮文件的列表 * * @name get_list * @param string $zipfilename 壓縮文件 * @return array */ public function get_list($zipfilename="zip.zip") { $file_dir_list = array(); $file_list = array(); if ($this->zip->open($zipfilename) == true) { for ($i = 0; $i < $this->zip->numFiles; $i++) { $numfiles = $this->zip->getNameIndex($i); if (preg_match('/\/$/i', $numfiles)) { $file_dir_list[] = $numfiles; } else { $file_list[] = $numfiles; } } } return array('files'=>$file_list, 'dirs'=>$file_dir_list); } /** * 得到文件頭與文件類型映射表 * * @name getTypeList * @param string $bin 文件的二進制前一段字符 * @return bool */ public function getTypeList($bin) { $array = [ ["504B0304", "zip"] ]; foreach ($array as $v) { $blen = strlen(pack("H*", $v[0])); //得到文件頭標記字節數 $tbin = substr($bin, 0, intval($blen)); ///需要比較文件頭長度 if (strtolower($v[0]) == array_shift(unpack("H*", $tbin))) { return true; } } return true; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看