Khóa học free Bài 32: Tìm hiểu về lớp File trong Java

Thảo luận trong 'Java cơ bản' bắt đầu bởi Tiasangmoi92, 21/8/13.

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 14,261
    /* Bài viết thuộc loạt bài hướng dẫn trong "Khóa Học Lập Trình Java Miễn Phí"
    trên diễn đàn Android.Vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người;) */

    Untitled
    - Lớp File thường được dùng để lấy các thông tin về tập tin cũng như thư mục.​
    - Hình ảnh ở trên chắc chắn các bạn thấy rất quen thuộc, đó là quá trình 1 phần mềm duyệt thư mục và chờ người dùng tìm, chọn mở 1 file hoặc thư mục nào đó.
    - Kiến thức ở mục này sẽ giúp các bạn hiểu bản chất các câu lệnh có thể làm được điều này, tuy nhiên nếu bạn chưa biết về lập trình giao diện trong Java thì chưa thể làm được, ở loạt bài viết về lập trình giao diện trong Java mình sẽ nhắc lại và cùng mọi người làm 1 chương trình
    có thể duyệt được file, thư mục tương tự như hình ảnh trên!

    **Chúng ta bắt đầu vào tìm hiểu về lớp File:

    1, Tạo đối tượng File từ đường dẫn tuyệt đối
    public File(String pathname)
    Ví dụ:
    PHP:
    //Tạo trước thư mục "demo" trong ổ E, nếu không chương trình sẽ lỗi
    File f = new File("E:\\demo\\androidvn.txt");
    f.createNewFile();
    2, Tạo đối tượng File từ tên đường dẫn thu mục và tên tập tin trong thư mục đó
    PHP:
    //Tạo trước thư mục "demo" trong ổ E, nếu không chương trình sẽ lỗi
    File f = new File("E:\\demo","androidvn2.txt");
    f.createNewFile();
    3, Tạo đối tượng File từ một đối tượng File khác
    public File(File parent, String child)
    Ví dụ:
    PHP:
    File dir = new File ("E:\\demo");
    File f = new File(dir,"androidvn3.txt");
    f.createNewFile();
    4, Tạo 1 thư mục với đường dẫn
    Ví dụ:
    PHP:
    File f = new File("E:\\demo2");
    f.mkdir();
    5, Một số phương thức thường gặp của lớp File

    Untit2

    6, Lấy danh sách tên các tập tin và thư mục con của đối tượng:
    Ta sử dụng:
    - public String[] list()
    File đang xét và trả về trong một mảng.
    Ví dụ:
    PHP:
    package javaandroidvn;
     
    import java.io.File;
    import java.io.IOException;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
            
    //Tạo trước thư mục "demo" trong ổ E, tạo 1 vài file và thư mục trong đó
            
    File dir = new File("E:\\demo");
            
    File[] listFile dir.listFiles();
     
            
    System.out.println("Danh sách file trong thư mục E:\\demo là: ");
            for (
    int i 0listFile.lengthi++) {
                if (
    listFile[i].isFile()) {
                    
    System.out.println(listFile[i].getName());
                }
            }
            
    System.out.println("Danh sách thưc mục trong thư mục E:\\demo là: ");
            for (
    int i 0listFile.lengthi++) {
                if (
    listFile[i].isDirectory()) {
                    
    System.out.println(listFile[i].getName());
                }
            }
        }
    }
    Tham khảo thêm 3 video của anh Việt bên blog StudyAndShare








    [​IMG]

    Bài tập về nhà::D
    (Lần này mình giao bài khó khó chút nhé)
    Tạo 1 chương trình gần giống cmd trong ms-dos chạy trên màn hình console, chức năng như sau:
    - Bật chương trình lên mặc định vào ổ E (hoặc ổ nào tùy ý), hiện lên E:\\ (Tên đường đang hiện hành)
    - Gõ "cd tenThuMuc" thì màn hình chuyển và hiện lên E:\\tenThuMuc trong đó tenThuMuc là tên thư mục tiếp tục muốn truy xuất.
    - Gõ "makeFile tenFile" thì sẽ tạo file trong thư mục hiện hành, trong đó tenFile là tên file cần tạo.
    - Từ vị trí con trỏ hiện hành, gõ "show" thì hiển thị ra toàn bộ cấu trúc cây thư mục trong thư mục đó.
    ....
    Trình bày khá dài dòng nhỉ, các bạn cứ cố gắng làm càng giống cmd trong ms-dos càng hay, bạn nào làm xong nhớ share mọi người cùng tham khảo nhé :D

    (Chú ý: Các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ PHP cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé;))

    [​IMG]

    My Facebook: https://www.facebook.com/tiasangmoi

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.Vn
    file class java, lớp file trong java, tạo file java, tạo thư mục java, lấy danh sách tên file thư mục trong java
    hatbvinatoon thích bài này.
  2. nucs

    nucs New Member

    Đã chạy được :)
    Show Spoiler

    PHP:
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javabasic;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.InputStreamReader;
     
    /**
    *
    * @author Ha
    */
    public class CMD {
        public static 
    void main(String[] args){
            try {
                
    String s;
                
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
                
    System.out.println("Bạn đang ở trình điều khiển cmd ổ đĩa E! \nNếu bạn muốn thoát, hãy nhập stop!");
                
    System.out.println("Bạn đang ở E:\\");
                
    String pathName "E:";
                
    String temp;
                do {
                    
    bf.readLine();
                   
                    if (
    s.startsWith("cd")){ 
                        
    temp s.trim().substring(3);
                        
    move(pathName,temp);
                        
    pathName pathName "\\" temp;
                    } else if (
    s.startsWith("makeFile")){
                        
    temp s.trim().substring(9);
                        
    createFile(pathNametemp);
                    } else if (
    s.startsWith("show")){
                        
    show(pathName);
                    }
                   
                } while (!
    s.equalsIgnoreCase("stop"));
            } catch (
    Exception ex){
                
    System.out.println("Có lỗi xảy ra: " ex);
            }
        }
        public static 
    void createFile(String pathNameString fileName){
            try {
                
    File file = new File(pathNamefileName);
                
    file.createNewFile();
                
    System.out.println("Thông báo: file " file.getName() + " đã được tạo thành công!");
               
            } catch (
    Exception ex){
                
    System.out.println("Đã xảy ra lỗi khi tạo!");         
            }     
        }
        public static 
    void move(String pathNameString dirName){
            try {   
                
    String s "";
                
    pathName pathName "\\" dirName;
                
    File file = new File(pathName);
                if(
    file.isFile()){          // thuc hien mo file
                    
    BufferedReader br= new BufferedReader(new FileReader(file));
                    while ((
    br.readLine()) != null){
                        
    System.out.println(s);
                    }
                }
               
            } catch (
    Exception ex){
                
    System.out.println(dirName " không tồn tại!");
               
            } finally {
                
    System.out.println("Bạn đang ở: " pathName);
            }
           
        }
       
        public static 
    void show(String pathName){
            try {
                
    File dir = new File(pathName);
                if (
    dir.isFile()){
                    
    System.out.println(dir.getName() + " không phải là thư mục!");
                } else if (
    dir.isDirectory()){
                    
    File[] listFile dir.listFiles();
                    for (
    int i 0listFile.lengthi++){
                        
    System.out.println("  " ", " listFile[i].getName());
                    }
                }
            } catch (
    Exception ex){
                
    System.out.println("Lỗi khi Show file! " ex);
            }
           
        }
    }
    13T2_DTle, chiennvTiasangmoi92 thích bài này.
  3. Martimillion

    Martimillion New Member

    cảm ơn rất nhiều !
  4. Show Spoiler

    Mã:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class BTBai32 {
        public static void main(String[]args) throws IOException{
            Scanner in=new Scanner(System.in);
            String d="D:\\\\";
            System.out.println(d);
            String s=in.nextLine();
            String s1,s2,s3;
            switch(s)
            {
                case  "cd":
                {
                    try{
                        System.out.println("NHap ten thu muc");
                        s1=in.nextLine();
                        taodirectory(d,s1);
                        System.out.println("Nhap file or Show thu muc ?");
                        s3=in.nextLine();
                        switch(s3)
                        {
                            case "makeFile":
                            {
                                System.out.println("NHap ten file");
                                s2=in.nextLine();
                                taoFile(s1,s2);
                                break;
                            }
                            case "show":
                            {
                                showdirectory(d+s1);
                                break;
                            }
                            default:
                                System.out.println("cd success");
                        }
                       
                    }catch(Exception exc){
                        System.out.println("Error cd directory");
                    }
                    break;
                }
                case "makeFile":
                {
                    try{
                        System.out.println("Nhap ten thu muc:");
                        s1=in.nextLine();
                        System.out.println("Nhap ten file");
                        s2=in.nextLine();
                        taoFile(s1,s2);
                    }catch(IOException exc){
                        System.out.println("Error make file");
                    }
                    break;
                }
                case "show":
                {
                    try{
                        System.out.println("Show thu muc");
                        System.out.println("Ten thu muc:");
                        s1=in.nextLine();
                        showdirectory(s1);
                    }catch(Exception exc){
                        System.out.println("Error show file");
                    }
                    break;
                }
                default:
                    System.out.println("try again");
            }
        }
        public static void taodirectory(String d,String s)
        {
            System.out.println(d+s);
        }
        public static void taoFile(String s1,String s2) throws IOException
        {
            String d1="D:\\\\"+""+s1+"\\"+s2;
               
            File f = new File(d1);
            f.createNewFile();
            System.out.println(d1);
        }
        public static void showdirectory(String s)
        {
            //Tạo trước thư mục "demo" trong ổ D, tạo 1 vài file và thư mục trong đó
            File dir = new File(s);
            File[] listFile = dir.listFiles();
     
            System.out.println("Danh sách file trong thư mục "+s+" là: ");
            for (int i = 0; i < listFile.length; i++) {
                if (listFile[i].isFile()) {
                    System.out.println(listFile[i].getName());
                }
            }
            System.out.println("Danh sách thưc mục trong thư mục "+s+" là: ");
            for (int i = 0; i < listFile.length; i++) {
                if (listFile[i].isDirectory()) {
                    System.out.println(listFile[i].getName());
                }
            }
     
        }
    }
    
  5. thanhpl

    thanhpl New Member

    Show Spoiler

    PHP:
        public static void main(String [] argsthrows IOException{
            
    File f = new File("d:\\");
            
    String command;
            
    System.out.print(f.getPath() + "\\");
           
          do {
              
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
    String temp[] = br.readLine().split(" ");
            
    command temp[0];
            switch ( 
    temp[0]) {
                case 
    "cd":
                    
    = new File(ftemp[1]);
                    if ( !
    f.isDirectory()) {
                                 
                    
    System.out.println(temp[1] + " is not a directory!");
                    
    = new File(f.getParent());
                    }
                    
    System.out.print(f.getPath() + "\\");
                       
                    break;
                case 
    "makeFile":
                    
    = new File(f,temp[1]);
                    
    f.createNewFile();
                    
    = new File(f.getParent());
                    
    System.out.print(f.getPath() + "\\");
                    break;
                case 
    "show":
                    
    File[] f2 f.listFiles();
                    for (
    int i 0f2.lengthi++) {
                        
    System.out.println(f2[i].getName());
                    }
                    
    System.out.print(f.getPath() + "\\");
                    break;
                case 
    "exit":
                    break;
                default: 
    System.out.println("Command not valid!");
            }
          } while ( 
    command.compareTo("exit") != 0);
        }
  6. brucelee

    brucelee New Member

    Show Spoiler

    PHP:
    package nhansu;
    import java.io.IOException;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.File;
    public class 
    CMD {
        public 
    void thuMuc()throws IOException{
            
    System.out.println("Microsoft Windows [Version 6.1.7601]");
            
    System.out.println("Copyright (c) 2009 Microsoft Corporation. All right reserved.");
            
    System.out.print("C:\Users\Administrator>");
            
    int k=0;
            while(
    k==0){
                
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                
    String st=br.readLine();
                
    String st4=st.substring(0,8);
                if(
    st4.equals("makeFile")){
                    
    String st5=st.substring(9);
                    
    k=1;
                    
    System.out.print("Thu muc luu file:");
                    
    String st6=br.readLine();
                    
    st5=st6+"\\"+"\\"+st5;
                    
    File f=new File(st5);
                    
    f.createNewFile();
                    
    String st7=br.readLine();
                    if(
    st7.equals("show")){
                        
    System.out.print("Thu muc:");
                        
    String st8=br.readLine();
                        
    File f2=new File(st8);
                        
    File []mang=f2.listFiles();
                        for(
    int i=0;i<mang.length;i++)
                            
    System.out.println(mang[i].getName());
                    }
                    break;
                }
                
    String st2=st.substring(3);
                
    String st3=st2+">";
                
    System.out.print(st3);
            }
        }
        public static 
    void main(String[]args)throws IOException{
            
    CMD a=new CMD();
            
    a.thuMuc();
        }
    }
  7. zhenyuan0502

    zhenyuan0502 New Member

    Code hơi dài, nhưng khắc phục được khi gõ trống không cd, cd[space] và trả về E:\\ :)


    Show Spoiler

    PHP:
    package javabasic;
     
    import java.util.Scanner;
    import java.io.*;
     
    /**
    *
    * @author zhenyuan0502
    */
    public class thuchanh_file {
     
        public static 
    void main(String[] argsthrows IOException {
            
    String locatelocate_clocate_c_c;
            
    int i;
            
    int k 1;
            
    Scanner input = new Scanner(System.in);
            
    System.out.println("Press [ stop ] to stop process");
            
    label:
            do {
                
    System.out.print("E:\\\\");
                
    locate input.nextLine();
                if (
    locate.compareTo("stop") == 0) {
                    break;
                }
                if (
    locate.length() < 4) {
                } else {
                    if ((
    locate.substring(03).compareTo("cd ") == 0) && (locate.substring(3) != null) ) {
                        try {
                            
    File f = new File(locate.substring(3)); //4
                       
                            
    File dir = new File("E:\\\\");
                            
    File[] listf dir.listFiles();
                            for (
    0listf.lengthi++) {
                                if (((
    listf[i].getName()).compareTo(locate.substring(3)) == 0) && listf[i].isDirectory()) {
                                    
    System.out.println("E:\\\\" locate.substring(3) + "\\");
                                    
    System.out.println("You want to create a file? press [ makeFile file_name ] to create or [ stop ] to stop process");
                                    
    locate_c input.nextLine();
                                    if (
    locate_c.compareTo("stop") == 0) {
                                        
    0;
                                        return;
                                    }
                                    if ((
    locate_c.substring(09).compareTo("makeFile ") == 0) && (locate_c.substring(9) != null)) {
                                        try {
                                            
    File fc = new File("E:\\\\" locate.substring(3) + "\\" locate_c.substring(9) + "\\");
                                            
    fc.createNewFile();
                                            
    System.out.println("Create file success");
                                            
    System.out.println("You want to show subfolder in this folder? [show/stop] ");
                                            
    locate_c_c input.nextLine();
                                            if (
    locate_c_c.compareTo("stop") == 0) {
                                                
    0;
                                                return;
                                            }
                                            if (
    locate_c_c.compareTo("show") == 0) {
                                                
    System.out.println("E:\\\\" locate.substring(3) + "\\");
                                                
    File dir_c = new File("E:\\\\" locate.substring(3) + "\\");
                                                
    File[] listf_c dir_c.listFiles();
                                                for (
    1listf_c.lengthi++) {
                                                    if (
    listf_c[i].isDirectory()) {
                                                        
    System.out.println("E:\\\\" locate.substring(3) + "\\" listf_c[i].getName());
                                                    }
                                                }
                                                
    0;
                                                return;
                                            }
                                            
    0;
                                            return;
                                        } catch (
    IOException e) {
                                            
    System.out.println("Error: " e);
                                        }
                                    }
                                    
    0;
                                    return;
                                }
                            }
                            if (
    != 0) {
                           
                                continue 
    label;
                            }
                        } catch (
    Exception e) {
                            
    System.out.println("Folder not found");
                            throw 
    e;
                        }
                   
                    }
                }
            } while (
    true);
        }
    }
  8. NHATTA

    NHATTA Member

    NB (open)

    PHP:
    package java_java;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class 
    CMD {
        public static 
    void main(String[] argsthrows IOException {
            
    Scanner Input = new Scanner(System.in);
            
    String option = new String();
     
            
    System.out.print("D:\\\\");
     
            
    option Input.nextLine();
            if (
    option.startsWith("cd")) {
                
    option "D:\\\\" option.substring(3);
                
    System.out.print(option);
            }
     
            if (
    option.startsWith("makeFile")) {
                
    String tenfile;
                
    // String d;
                // System.out.print("D:\\\\");
                
    tenfile option.substring(9);
     
                
    tenfile "D:\\\\" tenfile;
                
    File dir = new File(tenfile);
                
    dir.createNewFile();
            }
     
            if (
    option.compareTo("show") == 0) {
                
    File dir = new File("D:\\");
                
    File[] listFile dir.listFiles();
     
                
    System.out.println("Thu muc:");
     
                for (
    int i 0listFile.lengthi++) {
                    if (
    listFile.isDirectory()) {
                        
    System.out.println(listFile.getName());
                    }
                }
     
                
    System.out.println("File:");
     
                for (
    int i 0listFile.lengthi++) {
                    if (
    listFile.isAbsolute()) {
                        
    System.out.println(listFile.getName());
                    }
                }
            }
     
            
    Input.close();
        }
     
    }
  9. TruongCongPha

    TruongCongPha New Member

    [PHP (open)
    package baiTap;
    import java.io.*;
    import java.util.Scanner;
    public class Unit32 {
    public void taoThuMuc(String folder){
    try {
    File dir = new File(folder);
    dir.mkdir();
    } catch (Exception e) {
    System.out.println("k the tao thu muc");
    }
    }
    public static void main(String[] args) throws IOException {
    Scanner in=new Scanner(System.in);
    Unit32 un= new Unit32();
    String a,a1,b1,b,show;
    System.out.print("D:\\");
    a=in.nextLine();
    a1="D:\\"+a.substring(3,a.length());
    un.taoThuMuc(a1);
    System.out.println(a1);
    b=in.nextLine();
    b1=b.substring(9,b.length());
    File f= new File(a1,b1);
    f.createNewFile();
    show=in.nextLine();
    if(show.equalsIgnoreCase("show")==true){
    System.out.println(f.getPath());
    }
    }
    } [/PHP]]
  10. nguyenhong

    nguyenhong New Member

  11. zquangu112z

    zquangu112z Cuộc sống là không chờ đợi!

  12. hatb

    hatb Member

    Bai 32 - Tao phien ban kieu CMD (open)

    PHP:
    package baitapvenha;
    import java.io.File;
    import java.io.IOException;
    import java.util.Scanner;
    /**
    * Bài tập về nhà: (Lần này mình giao bài khó khó chút nhé) Tạo 1 chương trình
    * gần giống cmd trong ms-dos chạy trên màn hình console, chức năng như sau: -
    * Bật chương trình lên mặc định vào ổ E (hoặc ổ nào tùy ý), hiện lên E:\\ (Tên
    * đường đang hiện hành) - Gõ "cd tenThuMuc" thì màn hình chuyển và hiện lên
    * E:\\tenThuMuc trong đó tenThuMuc là tên thư mục tiếp tục muốn truy xuất. - Gõ
    * "makeFile tenFile" thì sẽ tạo file trong thư mục hiện hành, trong đó tenFile
    * là tên file cần tạo. - Từ vị trí con trỏ hiện hành, gõ "show" thì hiển thị ra
    * toàn bộ cấu trúc cây thư mục trong thư mục đó. .... Trình bày khá dài dòng
    * nhỉ, các bạn cứ cố gắng làm càng giống cmd trong ms-dos càng hay, bạn nào làm
    * xong nhớ share mọi người cùng tham khảo nhé
    */
     
    public class Bai32_ClassFile {
         public static 
    void main(String[] argsthrows IOException {
               
    Scanner sc = new Scanner(System.in);
               
    String strFile;
               
    File checkDisk[];
               
    File f = new File("E:\\demoFile");
               
    System.out.print(f.getPath() + ">");
               
    boolean b true;
               do {
                    
    strFile sc.nextLine();
                    if (
    strFile.equalsIgnoreCase("C:") || strFile.equalsIgnoreCase("D:") || strFile.equalsIgnoreCase("E:")) {
                        
    = new File(strFile "\\");
                        
    System.out.print(f.getPath() + ">");
                    } else if ((
    strFile.toLowerCase()).startsWith("cd")) {
                        
    checkDisk f.listFiles();
                        
    boolean check true;
                        for (
    int i 0checkDisk.lengthi++) {
                           if (
    checkDisk[i].isDirectory() && strFile.compareToIgnoreCase("cd " checkDisk[i].getName()) == 0) {
                               
    = new File(checkDisk[i].getPath());
                               
    System.out.print("" f.getPath() + ">");
                               
    check true;
                               break;
                           } else
                                
    check false;
                      }
                      if (!
    check) {
                             
    System.out.print("\nAccess is fail\n");
                             
    System.out.print("" f.getPath() + ">");
                      }
                } else if (
    strFile.compareToIgnoreCase("show") == 0) {
                         
    File f2 = new File(f.getPath());
                         do {
                               
    System.out.print("\n" f2.getParent());
                               
    f2 f2.getParentFile();
                               
    File list[] = f2.listFiles();
                               for (
    int i 0< list.lengthi++) {
                                     
    System.out.print("\n-->" + list[i]);
                               }
                           } while (
    f2.getParent() != null);
                           
    System.out.print("\n" f.getPath() + ">");
                  } else if (
    strFile.compareToIgnoreCase("exit") == 0) {
                          
    false;
                  } else if (
    strFile.toLowerCase().startsWith("makefile")) {
                          
    String sub strFile.replace("makefile """);
                          
    = new File(fsub);
                          
    f.createNewFile();
                          
    System.out.print("" f.getPath() + ">");
                   } else {
                         
    System.out.println("'" strFile "' is not recognized as an internall or external command, operable program or batch file.");
                         
    System.out.print(f.getPath() + ">");
                  }
            } while (
    == true);
            
    System.out.println("Exit Application!!!");
        }
    }

    /*
    * Day la chuong trinh cua minh, moi nguoi check giúp minh nhé.
    * Chay ct thi ban doi ten file thu muc bat dau nhe
    * 1. nhap C: ||D: ||E: || "cd <ten o dia>" de truy xuat o dia
    * ==> trong truong hop k co thu muc ban nhap se hien thi "Access fail"
    * ==> nhap k dung quy dinh(1) se yeu cau nhap lai
    * 2. nhap 'makefile ' de tao file moi
    * 3. nhap 'show' de xem toan bo cau truc cay thu muc
    * 4. nhap 'exit' neu ban muon thoat chuong trinh
    * ==> tat ca ki tu ban nhap khong phan biet 'HOA' va 'thuong'
    */
  13. I_am_lam

    I_am_lam New Member

    cho mình hỏi với là nếu tên file lưu utf8 thì làm thế nào để đọc ra mak không bị lỗi hả bạn, màn hình console khi in tên file utf8 lỗi mấy chữ như ư ơ...
  14. HaVietTrang

    HaVietTrang New Member

    Dùng Character I/O nhé
  15. NguyenVanThao

    NguyenVanThao New Member

    anh có bài hướng dẫn làm cái duyệt thư mục như hình đầu bài đăng không ạ?
  16. hoa_cntt52

    hoa_cntt52 New Member

    Bài viết cũng hay đấy thớt, nhưng mà thớt nên chỉ ra nhiều cách đọc và ghi, với các lớp đọc và ghi file ra nữa

Chia sẻ trang này