Zip all file and folder in folder via PHP

Chào các bạn. Mình sẽ chia sẽ cho các bạn một đoạn code để giúp các bạn nén tất cả file và folder nằm trong 1 folder lại thành một file zip. Cái này rất tiện dụng cho các bạn backup dữ liệu website.

Muốn zip được tất cả các file và folder trước hết bạn phải lấy tất cả các file cho vào 1 mãng bằng đoạn code sau:

public function arr_file_folder($folder_source = '')
{
    $arr_file = array();
    if( ! is_dir($folder_source))
    {
        return false;
    }

    $list_file = $this->strip_file(scandir($folder_source));
    foreach($list_file as $k => $v)
    {
        if(is_file($folder_source.'/'.$v))
        {
            $arr_file[] = $folder_source.'/'.$v;
        }
        if(is_dir($folder_source.'/'.$v))
        {
            $arr_file = array_merge($arr_file,$this->arr_file_folder($folder_source.'/'.$v));
        }

    }
    return $arr_file;
}

Với đoạn code này, sẽ trả về cho các bạn một mãng với danh sách các file, nó được chứa trong mãng $arr_file.

Ở đoạn code trên bạn thấy có đoạn code

$list_file = $this->strip_file(scandir($folder_source));

Đoạn code trên bạn thấy tôi có gọi đến hàm strip_file. Hàm này mục đích để bỏ đi 2 value là ‘.’ và ‘..’, 2 giá trị này thu được của hàm scandir mà mình không cần dùng tới. Hàm này được viết như dưới đây

public function strip_file($array = array(), $files = array('.','..','.DS_Store'))
{
    if(empty($files))
    {
        return false;
    }
    return array_diff($array,$files);
}

Khi đã thu được một mãng các file rồi bạn chỉ việc zip file đó lại nữa là xong. PHP có hỗ trợ thư viện ZipArchive. Bạn zip file lại bằng đoạn code sau.

public function zip_folder($folder_source = '')
{
    $arr_files = $this->arr_file_folder($folder_source);
    $file_name = 'Backup_WSD_'.date('Y_m_d_h_i',time()).'.zip';
    $zip = new ZipArchive();
    if ($zip->open($file_name,ZipArchive::CREATE | ZipArchive::OVERWRITE ) != true)
    {
        die('Cannot open file '.$file_name);
    }
    foreach($arr_files as $k => $v)
    {
        $zip->addFile($v);
    }
    $zip->close();

    return $file_name;
}

Đây là đoạn code đầy đủ để zip tất cả file và folder của PHP

/**
 * Created by PhpStorm.
 * User: buicongdang
 * Date: 1/18/16
 * Time: 11:33 PM
 */
class Folder
{
    public function zip_folder($folder_source = '')
    {
        $arr_files = $this->arr_file_folder($folder_source);
        $file_name = 'Backup_WSD_'.date('Y_m_d_h_i',time()).'.zip';
        $zip = new ZipArchive();
        if ($zip->open($file_name,ZipArchive::CREATE | ZipArchive::OVERWRITE ) != true)
        {
            die('Cannot open file '.$file_name);
        }
        foreach($arr_files as $k => $v)
        {
            $zip->addFile($v);
        }
        $zip->close();

        return $file_name;
    }

    public function strip_file($array = array(), $files = array('.','..','.DS_Store'))
    {
        if(empty($files))
        {
            return false;
        }
        return array_diff($array,$files);
    }

    public function arr_file_folder($folder_source = '')
    {
        $arr_file = array();
        if( ! is_dir($folder_source))
        {
            return false;
        }

        $list_file = $this->strip_file(scandir($folder_source));
        foreach($list_file as $k => $v)
        {
            if(is_file($folder_source.'/'.$v))
            {
                $arr_file[] = $folder_source.'/'.$v;
            }
            if(is_dir($folder_source.'/'.$v))
            {
                $arr_file = array_merge($arr_file,$this->arr_file_folder($folder_source.'/'.$v));
            }

        }
        return $arr_file;
    }

}

Các bạn sử dụng đoạn code trên bằng cách gọi như sau:

$zip = new Folder(); //Folder là class mà mình vừa viết phía trên

$zip->arr_file_folder(‘folder_can_zip’);// Trong đó folder_can_zip là folder mà bạn cần zip lại.

Thank 🙂 Chúc các bạn học tập và làm việc tốt!

Hướng dẫn cài đặt để lập trình được Java- bước đầu cho lập trình di động

Hôm nay mới được phân công cho tìm hiểu mãng lập trình di động, nhân tiện viết lại bài hướng dẫn cài đặt JDK để lập trình được Java, bước đầu tiên cho việc tìm hiểu về lập trình cho di động

Bước 1: Download JDK về và cái mặc định vào máy.
http://www.oracle.com/technetwork/java/javase/downloads/index.html
hoặc đưa USB đây tớ copy cho
Bước 2: Cấu hình JDK để nó có thể chạy được trên windows (đánh được các lệnh javac, java,… trong Dos của windows)

2.1: Chuột phải vào My computer>Properties Chọn Tab Advanced chọn tiếp Environment Variables (như hình bên dưới)

Sau đó hiện ra 1 cửa sổ các bạn làm theo hình dưới, đánh các tham số như 2 ô dưới.

Thông số như sau

variables name: Java_Home
variables value: C:\Program Files\Java\jdk1.6.0_21

Bước cuối là bạn edit cái PATH (User variables for buicongdang) như hình dưới

Thông số như sau

variables name: Giữ nguyên PATH
variables value: Thêm ;%Java_Home%\bin vào cuối dòng

Bạn đã cài đặt thành công, bây giờ các bạn thử chạy thử nhé.

Bạn copy cái đoạn code này và paste vào notepad và lưu lại với đuôi hello.java lưu vào ổ C:\

class hello {
public static void main(String Arg[])
{
System.out.println(“Chao cac ban day la chuong trinh dau tien”);
}
}

Sau đó vào Start>Run>cmd

Đánh lệnh cd\ lệnh này nhằm mục đích cho về với thư mục gốc.

sau đó với con trỏ lện bạn đánh c:\javac hello.java

Bạn nhìn vào ổ C:\ bạn sẽ thấy có 1 file hello.class

Bây giờ chạy nó bằng cách c:\java hello

Ma trận số ngẫu nhiêu với hàm rand() trong c++

Xây dựng một ma trận ngẫu nhiêu với số trong ma trận được sinh ra ngẫu nhiêu từ 1 đến 6, và thống kê số lượng số được sinh ra trong ma trận.

Hàm rand() trong C++ cho phép chúng ta sinh ra 1 số ngẫu nhiên từ 0 đến 32767 hàm rand()%6 sẽ cho chúng ta 1 số từ 0 đến 5. Nên chúng ta muốn sinh ra 1 số từ 1 đến 6 chúng ta sử dụng 1 + rand()%6.

Chúng ta có chương trình cụ thể phía dưới

#include <iostream.h>

#include <iomanip.h>

#include <stdlib.h>

int main()

{

int so1,so2,so3,so4,so5,so6;

int sotha;

so1 = 0;so2 = 0; so3 = 0; so4 = 0; so5 = 0; so6 = 0;

for(int i = 0;i <= 6000 ; i++)

{

sotha = 1 + rand()%6;

cout << setw(3)<< sotha << setw(3);

if(i % 5 == 0)

cout << endl;

//dem so luong duoc tha tu dong

switch(sotha)

{

case 1: so1 ++; break;

case 2: so2 ++; break;

case 3: so3 ++; break;

case 4: so4 ++; break;

case 5: so5 ++; break;

case 6: so6 ++; break;

default: cout << “Khong hop le”;

}

}

cout << setw(10) << “\nTHONG KE SO LUONG MA TRAN DUOC THA RA LA \n”;

cout << setw(3) << “So 1 duoc tha :” << so1 << “lan \n”;

cout << setw(3) << “So 2 duoc tha :” << so2 << “lan \n”;

cout << setw(3) << “So 3 duoc tha :” << so3 << “lan \n”;

cout << setw(3) << “So 4 duoc tha :” << so4 << “lan \n”;

cout << setw(3) << “So 5 duoc tha :” << so5 << “lan \n”;

cout << setw(3) << “So 6 duoc tha :” << so6 << “lan \n”;

return 0;

}

Download chương trình về tại đây