Khóa học free Bài 31: Đọc/ghi file dùng luồng ký tự 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: 20,955
    /* 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;) */

    144887966
    - Khi chúng ta thao tác với văn bản, có thể sử dụng luồng byte. Tuy nhiên thì sự lựa chọn tốt nhất không phải là nó mà là luồng ký tự, việc sử dụng luồng ký tự có ưu điểm là thao tác trực tiếp trên các ký tự Unicode.
    - Cụ thể ở bài này mình sẽ giới thiệu 2 lớp luồng thường dùng cho việc đọc , ghi dữ liệu file là FileReader và FileWriter

    1, Ghi dữ liệu xuống file văn bản!

    Ví dụ: Nhập danh sách tên của 1 lớp học và ghi chúng xuống file tên là "danhsach.txt". Việc đọc và ghi kết thúc khi người dùng nhập vào chuỗi "stop".
    PHP:
    package javaandroidvn;
     
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
            
    String str;
            
    FileWriter fw;
     
            
    BufferedReader br = new BufferedReader(
                    new 
    InputStreamReader(System.in));
     
            try {
                
    fw = new FileWriter("E:\\danhsach.txt");
            } catch (
    IOException exc) {
                
    System.out.println("Có lỗi xảy ra");
                return;
            }
     
            
    System.out.println("Nhập danh sách tên: ('stop' để kết thúc chương trình)");
     
            do {
                
    System.out.print(": ");
                
    str br.readLine();
                if (
    str.compareTo("stop") == 0) {
                    break;
                }
                
    str str "\n";  //Dùng để xuống dòng khi nhập xong 1 chuỗi!
                
    fw.write(str);
            } while (
    str.compareTo("stop") != 0);
     
            
    fw.close();
            
    System.out.println("Bạn mở file ở đường dẫn E:\\danhsach.txt, dũ liệu đã được lưu!");
     
        }
    }
    2, Đọc dữ liệu từ File văn bản

    Ví dụ: Đọc và hiển thị nội dung của file "danhsach.txt" lên màn hình. Trong đó file là file văn bản, trong là danh sách tên ghi theo từng dòng! Chương trình sẽ đọc file văn bản từng dòng!
    PHP:
    package javaandroidvn;
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
            try (
    FileReader fr = new FileReader("E:\\danhsach.txt")) {
                
    //Bạn có thể tạo dữ liệu văn bản dạng UTF-8 - Tiếng Việt
                
    BufferedReader br = new BufferedReader(fr);
                
    String s;
                
    //Đọc từng dòng văn bản!
                
    while ((br.readLine()) != null) {
                    
    System.out.println(s);
                }
            }catch(
    IOException e){
                
    System.out.println("Đã có lỗi xảy ra!");
            }
     
        }
    }


    [​IMG]

    Bài tập về nhà::D
    Viết chương trình copy nội dung file "input.txt" sang file "output.txt" sử dụng cách đọc ghi văn bản!
    Bạn nào làm xong cố gắng bớt chút ít thời gian đăng lên cho các bạn khác cùng tham khảo nhé!

    (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
    đọc ghi file java, luồng ký tự, đọc ghi file dùng luồng ký tự, file trong java, file văn bản trong java, đọc ghi file văn bản java
    nguyenthanhTuyen, lumia88vinatoon thích bài này.
  2. vinatoon

    vinatoon New Member

    Cảm ơn chủ thớt rất nhiều...
  3. Show Spoiler

    Mã:
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
     
    public class BTBai31 {
        public static void main(String[]args) throws IOException{
            BTBai31 bt=new BTBai31();
            String input="D:\\input.txt";
            String output="D:\\output.txt";
            System.out.println("Ghi noi dung file input:");
           
            bt.writefile(input);
            System.out.println("Copy file input sang output");
            bt.Copy(input, output);
            System.out.println("Doc noi dung file output:");
            bt.readfile(output);
        }
        public static void writefile(String str) throws IOException
        {
            FileWriter fw;
     
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(System.in));
     
            try {
                fw = new FileWriter(str);
            } catch (IOException exc) {
                System.out.println("Có lỗi xảy ra");
                return;
            }
     
            System.out.println("Nhập danh sách tên: ('stop' để kết thúc chương trình)");
     
            do {
                System.out.print(": ");
                str = br.readLine();
                if (str.compareTo("stop") == 0) {
                    break;
                }
                str = str + "\n";  //Dùng để xuống dòng khi nhập xong 1 chuỗi!
                fw.write(str);
            } while (str.compareTo("stop") != 0);
     
            fw.close();
     
        }
        public static void readfile(String str)
        {
            try (FileReader fr = new FileReader(str)) {
                //Bạn có thể tạo dữ liệu văn bản dạng UTF-8 - Tiếng Việt
                BufferedReader br = new BufferedReader(fr);
                String s;
                //Đọc từng dòng văn bản!
                while ((s = br.readLine()) != null) {
                    System.out.println(s);
                }
            }catch(IOException e){
                System.out.println("Đã có lỗi xảy ra!");
            }
     
     
        }
        public static void Copy(String s1,String s2) throws IOException
        {
            FileInputStream fin;
            FileOutputStream fout;
            try{
    //            open input file
                fin=new FileInputStream(s1);
            }catch(FileNotFoundException exc){
                System.out.println("File Not Found");
                return;
            }
    //        open output file
            try{
                fout=new FileOutputStream(s2);
            }catch(FileNotFoundException exc){
                System.out.println("Error Opening OutputFile");
                return;
            }catch(ArrayIndexOutOfBoundsException exc){
                System.out.println("Usage: CopyFile From To");
                return;
            }
    //        copy file
            int i;
            try{
                do{
                    i=fin.read();
                    if(i != -1)
                    {
                        fout.write(i);
                    }
                }while(i != -1);
            }catch(IOException exc){
                System.out.println("File Error ");
                return;
            }
           
    //        close file
            fin.close();
            fout.close();
        }
    }
    
    lumia88 thích bài này.
  4. Martimillion

    Martimillion New Member

    Thanks ! rất bổ ích
  5. Martimillion

    Martimillion New Member

    Thanks ! rất bổ ích
  6. bqthanh94_cntt

    bqthanh94_cntt alone 94

    PHP:
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    class 
    copy{
        public 
    void read()throws IOException{
            
    BufferedReader buff;
            
    FileWriter f;
            
    FileInputStream ff;
            try{
                
    f=new FileWriter("g:\\java\\output.txt");
              
    buff=new BufferedReader(new FileReader("g:\\java\\input.txt"));
     
            }catch(
    IOException e){
                
    System.out.println("Error open file");
                return;
            }
            
    String s;
            try{
            while((
    s=buff.readLine())!=null){
                
    f.write(s);
            }
            }catch(
    IOException e){
                
    System.out.println("Error reading file");
            }
            
    f.close();
        }
    }
    public class 
    read_vanban {
        public static 
    void main(String[] argsthrows IOException {
            
    copy c=new copy();
            
    c.read();
        }
    }
    mình lưu file dưới dạng văn bản tiếng việt, sau đó đọc vào file output thì nó có những kí tự lạ, mấy bạn giúp với
    anhdung thích bài này.
  7. thanhpl

    thanhpl New Member

    Show Spoiler

    PHP:
    public static void main(String [] argsthrows IOException{
            
    FileWriter fw = new FileWriter("d:\\output.txt");
            
    FileReader fr;
            
    String s;
            try {
                
    fr = new FileReader("d:\\input.txt");
            } catch (
    FileNotFoundException ex) {
                
    System.out.println("Co loi: " ex);
                return;
            }
           
            
    BufferedReader br = new BufferedReader(fr);
            while ( (
    br.readLine()) != null ) {
                
    fw.write("\n");
            }
            
    fr.close();
            
    fw.close();
        } 
    nguyenthanhTuyenNHATTA thích bài này.
  8. brucelee

    brucelee New Member

    Show Spoiler

    PHP:
    package nhansu;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    import java.io.FileNotFoundException;
    public class 
    CopyLuongKiTu {
        public 
    void copy(String st1,String st2)throws IOException{
            
    BufferedReader br;
            
    FileReader fr;
            try{
                
    fr=new FileReader(st1);
                
    br=new BufferedReader(fr);
            }catch(
    FileNotFoundException exc){
                
    System.out.println("file nguon khong ton tai");
                return;
            }
           
            
    String s;
            
    FileWriter fw;
            try{
                
    fw=new FileWriter(st2);
            }
            catch(
    FileNotFoundException exc){
                
    System.out.println("khong mo duoc file");
                return;
            }
            while((
    s=br.readLine())!=null){
                try{
                    
    s=s+"\r\n";
                    
    fw.write(s);
                }
                catch(
    IOException exc){
                    
    System.out.println("loi!");
                    return;
                }
            }
            
    fw.close();
        }
        public static 
    void main(String[]args)throws IOException{
            
    CopyLuongKiTu a=new CopyLuongKiTu();
            
    Scanner input=new Scanner(System.in);
            
    System.out.println("+Chuong trinh thuc hien lenh copy:");
            
    System.out.print("    Duong dan file nguon:");
            
    String st1=input.nextLine();
            
    System.out.print("    Duong dan file dich:");
            
    String st2=input.nextLine();
            
    a.copy(st1,st2);
        }
    }
  9. funnyclock

    funnyclock New Member

    Copy file sử dụng FileReader/Writer (open)

    PHP:
    package Test;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class 
    Test{
     
        public static 
    void main(String[] argsthrows IOException {
       
         
    BufferedReader br null;
         
    FileReader fr null;
         
    FileWriter fw null;
         
    String s;
       
         
    System.out.println("Mo mot file da duoc luu");
            try {
         
    fr = new FileReader("C:\\01.txt");
       
         
    System.out.println("Mo file de ghi");
         try {
             
    fw = new FileWriter("D:\\02.txt");
             }catch (
    IOException e) {
             
    System.out.println("Da co loi xay ra.");
             }
         } catch (
    IOException e) {
         
    System.out.println("Da co loi xay ra.");
         }
       
      
         
    br = new BufferedReader(fr);
       
        
    System.out.println("Chep vao file 02.txt");
       
         do {
         
    br.readLine();
         if (
    == null) {
         break;
         } else {
         
    += "\n";
             
    fw.write(s);
             
    System.out.println(s);
         }
         } while (
    != null );
       
         
    System.out.println("File đã được chép!");
       
        }
    }

    Các bro xem giùm em, phần thân, tại sao khi chạy, in ra console được nhưng lại không thể viết vào file sử dụng FW. em mày mò cả buổi rồi mà không thông.
    //Code có chỗ nào chưa hay thì chỉ ra giùm em với :D
    Em cám ơn :D
  10. NHATTA

    NHATTA Member

    Nop bai (open)

    PHP:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
     
    public class 
    coppyFile {
        @
    SuppressWarnings("resource")
        public static 
    void main(String[] argsthrows IOException
        
    {
            
    //Copy file input.txt sang file output.txt su dung cach doc van ban
           
            //Doc file
            
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
    FileWriter fw;
           
            
    String tenfile;
            
    System.out.print("Nhập đường dẫn file:");
            
    tenfile br.readLine();
           
            
    FileReader fr = new FileReader(tenfile);
            
    BufferedReader b = new BufferedReader(fr);
            
    String s;
            
    //Doc tung dong van ban
            
    System.out.print("Nhập đường dẫn file luu:");
            
    tenfile br.readLine();
           
            
    fw = new FileWriter(tenfile);
           
            while((
    b.readLine()) != null)
            {
                
    "\n";
                
    fw.write(s);
            }
           
            
    //Ghi file
           
            
    fw.close();
        }
    }
  11. NHATTA

    NHATTA Member

    thử cái này thử:
    while((s = b.readLine()) != null)
    {
    s = s + "\n";
    fw.write(s);
    }
  12. zquangu112z

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

    Show Spoiler

    Mã:
    ackage $31DocGhiDLieuDungLuongKyTu;
     
     
     
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
     
     
     
    public class Baitap {
    public static void main(String[] args) {
    try{
    FileReader fr=new FileReader("D:\\vy2301.txt");
    BufferedReader br=new BufferedReader(fr);
    FileWriter fw=new FileWriter("D:\\vynhat.txt");
    String s;
    while((s=br.readLine())!=null){
    fw.write(s);
    System.out.println(s);
    }
    fr.close();
    fw.close();
    }catch(IOException e1){
    System.out.println(e1);
    }
    }
    }
  13. hatb

    hatb Member

    Bai31 -Doc ghi file dung luong ki tu trong java (open)

    PHP:
    Bai31
    package baitapvenha
    ;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    /**
    * Viết chương trình copy nội dung file "input.txt" sang file "output.txt" sử
    * dụng cách đọc ghi văn bản! Bạn nào làm xong cố gắng bớt chút ít thời gian
    * đăng lên cho các bạn khác cùng tham khảo nhé!
    */
    public class Bai31 {
         public static 
    void main(String[] argsthrows IOException {
              
    Scanner sc = new Scanner(System.in);
              
    String part1part2;
              
    System.out.println("Nhap duong dan file nguon ( start = :\\\\...\\*.*)");
              
    part1 sc.nextLine();
              
    System.out.println("Nhap duong dan file dich ( start = :\\\\...\\*.*)");
              
    part2 sc.nextLine();
             
    /*part1 = "E:\\ThongtinSV.txt";
              part2 = "D:\\Thongtinghilai.txt";
             */
              
    Bai31 test = new Bai31();
              
    test.copyFile(part1part2);
         }
         
         public 
    void copyFile(String part1String part2throws IOException {
              
    FileReader fr;
              
    FileWriter fw null;
              try {
                     
    fr = new FileReader(part1);
                     
    fw = new FileWriter(part2);
                     
    BufferedReader br = new BufferedReader(fr);
                     
    String str;
                     
    // Doc tung dong van ban
                     
    while ((str br.readLine()) != null) {
                           
    str str " ";
                           
    fw.write(str);
                           
    System.out.println(str);
                     }
             } catch (
    FileNotFoundException e) {
                 
    // TODO Auto-generated catch block
                 
    System.out.println("Error: " e);
             }
             
    fw.close();
          }
    }
  14. vulenguyen

    vulenguyen New Member

    Bạn chỉnh UTF-8 trong eclipse đi
  15. nhankvHK

    nhankvHK New Member

    // mong mọi người đóng góp ý kiến để mình hoàn thiện hơn
    PHP:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
     
    /**
    * Created by WhyNotMe on 16/03/2015.
    */
    public class readWriteRead {
        public static 
    String[] readFile(String url) {
            
    String[] = new String[10];
            
    int index 0;
            try  {
                
    FileReader fr = new FileReader(url);
                
    BufferedReader br = new BufferedReader(fr);
                while ((
    s[index] = br.readLine()) != null) {
                    
    index++;
                }
            } catch (
    Exception e) {
                
    System.out.println(e);
            }
            return 
    s;
        }
        public static 
    void writeFile(String[] urlString link) {
            
    FileWriter fw;
            
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            try {
                
    fw = new FileWriter(link);
                for (
    int i 0url.lengthi++) {
                    if (
    url[i] != null) {
                        
    fw.write(url[i]);
                    }
                }
                
    fw.close();
            } catch (
    Exception e) {
                
    System.out.println(e);
            }
        }
        public static 
    void main(String[] args) {
            
    String intputFile "E:\\input.txt";
            
    String outFile "E:\\output.txt";
            
    String[] file readFile(intputFile);
            
    writeFile(fileoutFile);
        }
    }
  16. Tentacle

    Tentacle New Member

    Bai 31 (open)

    PHP:
    package Android.vn;
    import java.io.*;
    public class 
    Bai31 {
     
     
    public static 
    void main(String[] argsthrows IOException{
    // input
    FileWriter fw=new FileWriter("E:\\input.txt");
     
     
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Nhap du lieu can ghi");
    System.out.print("Ket thuc bang dau <>\n");
     
    String s;
    do{
    System.out.println(". ");
    s=br.readLine();
    if (
    s.compareTo("<>")==0){break;}
    s=s+"\n";
    fw.write(s);

    while(
    s.compareTo("<>")!=0);
    fw.close(); System.out.println("Da xong buoc ghi");
    //output
    FileWriter fw1;
    try{ 
    fw1=new FileWriter("e:\\output.txt");}
    catch(
    IOException exc){
    System.out.println("LOI");
    return ;
    }
     
    try(
    FileReader fr=new FileReader("e:\\input.txt")){
     
    BufferedReader br1 = new BufferedReader(fr);
    while ((
    s=br1.readLine())!=null){
    s=s+"\n";
    fw1.write(s);
     
     
     
     
    }
    } catch(
    IOException exc){
    System.out.println("co loi");
    }
    fw1.close();
    System.out.println("chep xong");
     
     
     
     
    }
    }

Chia sẻ trang này