Khóa học free Bài 27: Đọc và ghi file dùng luồng byte trong Java

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

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 19,070
    /* 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;) */

    byte-stream
    - Với cách đọc ghi này ta tạo một luồng Byte gắn với file chỉ định dùng FileInputStream và FileOutputStream.
    - Để mở một file, đơn giản chỉ cần tạo một đối tượng của những lớp này, tên file cần mở là thông số trong constructor. Khi file mở, việc đọc và ghi dữ liệu trên file được thực hiện một cách bình thường thông qua các phương thức cung cấp trong luồng.

    1, Đọc dữ liệu từ file dùng luồng byte:

    - Mở một file để đọc dữ liệu FileInputStream(String fileName) throws FileNotFoundException. Nếu file không tồn tại: thì ném ra FileNotFoundException.
    - Đọc dữ liệu: dùng phương thức read():
    int read( ) throws IOException: đọc từng byte từ file và trả về giá trị của byte đọc được. Trả về -1 khi hết file, và ném ra IOException khi có lỗi đọc.
    - Đóng file: dùng phương thức close():
    void close( ) throws IOException: sau khi làm việc xong cần đóng file để giải phóng tài nguyên hệ thống đã cấp phát cho file.

    Ví dụ:
    PHP:
    package javaandroidvn;
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
     
    /*
    Tạo file androidvn.txt ở ổ E, gõ nội dung văn bản vào đó rồi lưu lại!
    Hiển thị nội dung của một file tên androidvn.txt lưu tại E:\androidvn.txt
    */
    public class JavaAndroidVn {
     
        public static 
    void main(String args[]) throws IOException {
     
            
    FileInputStream f;
            try {
                
    = new FileInputStream("E:\\androidvn.txt");
            } catch (
    FileNotFoundException exc) {
                
    System.out.println("File Not Found");
                return;
            } catch (
    ArrayIndexOutOfBoundsException exc) {
                
    System.out.println("Usage: ShowFile File");
                return;
            }
     
            
    // Đọc cho tới cuối file
            
    int i;
            do {
                
    f.read();
                if (
    != -1) {
                    
    System.out.print((chari);
                }
            } while (
    != -1);
            
    f.close();
        }
    }
    2. Ghi dữ liệu xuống file dùng luồng byte:

    - Mở một file để ghi dữ liệu FileOutputStream(String fileName) throws FileNotFoundException
    Nếu file không tạo được: thì ném ra FileNotFoundException
    - Ghi dữ liệu xuống: dùng phương thức write():
    void write(int byteval) throws IOException: ghi một byte xác định bởi tham số byteval xuống file, và ném ra IOException khi có lỗi ghi.
    - Đóng file: dùng phương thức close():
    void close( ) throws IOException: sau khi làm việc xong cần đóng file để giải phóng tài nguyên hệ thống đã cấp phát cho file.

    Ví dụ: Chương trình sẽ tự tạo file "E:\\output.txt", ghi vào các ký tự từ a -> z
    PHP:
    package javaandroidvn;
     
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    class 
    JavaAndroidVn {
     
        public static 
    void main(String args[]) throws IOException {
            
    FileOutputStream fout;
     
    // Tạo file mới!
            
    try {
                
    fout = new FileOutputStream("E:\\output.txt");
            } catch (
    FileNotFoundException exc) {
                
    System.out.println("Error Opening OutputFile ");
                return;
            }
     
    // Ghi file theo từng ký tự từ a -> z
            
    int i 'a';
            
    int j 'z';
            for (
    'a'<= ji++) {
                
    fout.write(i);
            }
            
    fout.close();
        }
    }
    3, Copy file trong Java:

    Dưới đây là 1 chương trình đơn giản để copy file trong Java, nó chưa thực sự tối ưu vì mình thấy tốc độ của nó rất chậm. Bạn có thể dùng để copy bất cứ định dạng nào, không phải chỉ riêng file văn bản! Nó dùng cách đọc ghi file dùng luồng byte như trên!
    PHP:
    package javaandroidvn;
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    class 
    JavaAndroidVn {
     
        public static 
    void main(String args[]) throws IOException {
            
    FileInputStream fin;
            
    FileOutputStream fout;
            try {
    // open input file
                
    try {
                    
    fin = new FileInputStream("E:\\in.mp3");
                } catch (
    FileNotFoundException exc) {
                    
    System.out.println("Input File Not Found");
                    return;
                }
     
    // open output file
                
    try {
                    
    fout = new FileOutputStream("E:\\out.mp3");
                } 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 {
                    
    fin.read();
                    if (
    != -1) {
                        
    fout.write(i);
                    }
                } while (
    != -1);
            } catch (
    IOException exc) {
                
    System.out.println("File Error");
            }
            
    fin.close();
            
    fout.close();
        }
    }
    [​IMG]

    Bài tập về nhà::D

    Biến màn hình console thành màn hình lệnh như sau:
    - Nếu bạn gõ từ "copy", thì chương trình sẽ hỏi địa chỉ file cần copy, bạn gõ địa chỉ file cần copy vào, nếu không tồn tại sẽ bắt nhập lại, nếu tồn tại sẽ hỏi địa chỉ file đích, sau đó chương trình sẽ copy file đó. Tương tự với các lệnh "move", "delete"
    - Gợi ý cách xóa file:
    Thêm 2 dòng lệnh như ví dụ này là bạn có thể xóa được 1 file:
    PHP:
    File f = new File("E:\\in.mp3");
    f.delete();
    ** Mình chỉ nêu ý cơ bản bài như vậy, bạn hãy cố gắng làm chương trình thật tốt và tiện lợi với người dùng! Ví dụ nhập lệnh "copy str1 str2" với str1, str2 là đường dẫn nguồn và đích, rồi Enter nó sẽ copy luôn.
    ** Làm xong, đừng quên share lên forum để mọi người 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
    read file java, write file in java, đọc ghi file dùng luồng byte java, read write byte java, chương trình copy file java, copy file trong java, khóa học java, khóa học lập trình java, khóa học lập trình java giá rẻ, read file in java byte
    HaiHack, nucs, vinatoon2 others thích bài này.
  2. nucs

    nucs New Member

    Chào các bạn, đây là bài của mình, mọi người xem và nhận xét nhé :)
    Show Spoiler

    PHP:
    [CODE]/*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javabasic;
     
    /**
    *
    * @author Ha
    */
    import java.io.*;
    import java.util.*;
    public class 
    JavaBasic {
     
        
    /**
        * @param args the command line arguments
        */
        
    public static void main(String[] argsthrows IOException{
            
    switchChosen();
        }
        public static 
    void switchChosen(){
            try {
                
    Scanner input = new Scanner(System.in);
                
    String alenhnguondich;
                
    int daucach2;
                
    System.out.println("Nhap lenh ban muon thuc hien:");
                
    input.nextLine().trim();
                
    int daucach1 a.indexOf(" ");
                
    lenh a.substring(0daucach1);
                
    int b;
                if(
    lenh.equalsIgnoreCase("copy"))
                {
                    
    1;
                } else if (
    lenh.equalsIgnoreCase("move")){
                    
    2;
                } else if (
    lenh.equalsIgnoreCase("delete")){
                    
    3;
                } else 
    4;
         
                switch (
    b){
                    case 
    1: {
                        
    daucach2 a.substring(daucach1 1).indexOf(" ") + a.substring(0,daucach1).length();
                        
    nguon a.substring(daucach1 1daucach2);
                        
    dich a.substring(daucach2 1);
                        
    copyFile(nguon,dich);
                        break;
                    }
                    case 
    2:
                        
    daucach2 a.substring(daucach1 1).indexOf(" ") + a.substring(0,daucach1).length();
                        
    nguon a.substring(daucach1 1daucach2);
                        
    dich a.substring(daucach2 1);
                        
    moveFile(nguondich);
                        break;
                    case 
    3:
                        
    nguon a.substring(daucach1 1);
                        
    deleteFile(nguon);
                        break;
                    case 
    4:
                        
    System.out.print("Lenh nhap vao sai!");
                        break;
                }
            } catch (
    Exception ex){
                
    System.out.println("Loi nay la loi gi? " ex);
            }
     
        }
        public static 
    void moveFile (String souFileString desFilethrows Exception{
     
     
            
    FileInputStream fileIn null;
            
    FileOutputStream fileOut null;
            
    File file =  null;
            try {
                
    fileIn = new FileInputStream(souFile);
                
    file = new File(souFile);
                
    fileOut = new FileOutputStream(desFile);
            } catch (
    Exception ex){
                
    System.out.println("Loi khoi tao file xuat hien: " ex);
            }
            
    int i;
            try {
                do {
                    
    fileIn.read();
                    if (
    != -1){
                        
    fileOut.write(i);
                    }
                } while (
    != -1);
            } catch (
    Exception ex){
                
    System.out.println("Loi doc va ghi file: " ex);
            }
            
    fileIn.close();
            
    fileOut.close();
            
    file.delete();
        }
        public static 
    void copyFile(String inputFileString outputFilethrows IOException{
     
            
    FileInputStream fIn null;
            
    FileOutputStream fOut null;
            
    // mo file input
            
    try {
                
    fIn = new FileInputStream(inputFile);
            } catch (
    Exception ex){
                
    System.out.print("Co loi xay ra voi Input");
            }
            
    // tao file output
            
    try {
                
    fOut = new FileOutputStream(outputFile);
            } catch (
    Exception ex){
                
    System.out.println("Co loi xay ra voi Output");
            }
            
    // doc va ghi file
            
    int i;
     
            do {
                
    fIn.read();
                if(
    != -1){
                    
    fOut.write(i);
                }
            } while (
    != -1);
            
    fIn.close();
            
    fOut.close();
     
        }
        public static 
    void deleteFile(String souFile){
            try {
                
    String yes;
                
    Scanner input = new Scanner(System.in);
                
    File file = new File(souFile);
                
    System.out.print("Ban chac chan xoa? nhap 1 neu dong y, nhap 0 neu huy xoa: ");
                
    yes input.nextLine();
                if (
    yes.equals("1")){
                    
    file.delete();
                    
    System.out.println("Xoa thanh cong!");
                } else {
                    
    System.out.println("Ban da huy xoa file!");
                }
            } catch (
    Exception ex){
                
    System.out.println("Loi khi xoa file: " ex);
            }
        }
    }
    [/
    CODE]
    13T2_DTle thích bài này.
  3. HaiHack

    HaiHack Member

    Mình không hiểu trong catch sao lại có return
    chiennv thích bài này.
  4. Show Spoiler

    Mã:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class BTBai27 {
        public static void main(String[]args) throws IOException{
            BTBai27 bt=new BTBai27();
            System.out.println("Menu:");
            int i;
            System.out.println("Nhap yeu cau: ");
            Scanner in=new Scanner(System.in);
            i=in.nextInt();
            in.nextLine();
            String s1,s2;
           
            switch(i)
            {
                case 1:
                {
                    System.out.println("This is copy");
                    System.out.println("dia chi file can copy: ");
                    s1=in.nextLine();
                    System.out.println("dia chi file dich: ");
                    s2=in.nextLine();
                    Copy(s1,s2);
                    break;   
                }
                case 2:
                {
                    System.out.println("This is Move:");
                    System.out.println("dia chi file can Move: ");
                    s1=in.nextLine();
                    System.out.println("dia chi file dich: ");
                    s2=in.nextLine();
                    try{
                        Copy(s1,s2);
                        Delete(s1);
                    }catch(Exception exc){
                        System.out.println("Error file");
                    }
                   
                    break;
                }
                case 3:
                {
                    System.out.println("This is delete");
                    System.out.println("Dia chi file can xoa:");
                    s1=in.nextLine();
                    Delete(s1);
                    break;
                }
                default:
                {
                    System.out.println("Try again");
                    break;
                }
            }
        }
        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();
        }
        public static void Delete(String s)
        {
            try{
                File f=new File(s);
                f.delete();
            }catch(Exception exc){
                System.out.println("File Error ");
                return;
            }
           
        }
    }
    
  5. cuongBK

    cuongBK Member

    Thực ra nên bỏ return đi, để cũng như thế, đàng nào khi xảy ra catch nó cũng print rồi.
  6. HaiHack

    HaiHack Member

    Bỏ đi sao được cậu, bỏ đi thì fin.read() sẽ bị lỗi do chưa có giá trị thì phải
  7. bqthanh94_cntt

    bqthanh94_cntt alone 94

    Show Spoiler
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    import java.io.File;
    class copy
    {
    public void copyfile()throws IOException
    {
    FileInputStream f = null;
    String s;
    int i=0;
    Scanner sc=new Scanner(System.in);
    do{
    i=0;
    System.out.print("nhập địa chỉ file cần copy: ");
    s=sc.nextLine().trim();
    try{
    f=new FileInputStream(s);
    }catch(FileNotFoundException e){
    i=1;
    System.out.println("không tìm thấy file, vui lòng nhập lại: ");
    }
    }while(i==1);
    FileOutputStream fo = null;
    do{
    i=0;
    System.out.print("nhập địa chỉ file đích: ");
    String st=sc.nextLine().trim();
    try{
    fo=new FileOutputStream(st);
    }catch(FileNotFoundException e){
    i=1;
    System.out.println("địa chỉ file đích sai, vui lòng nhập lại: ");
    }
    }while(i==1);
    int j=0;
    do
    {
    j=f.read();
    if(j!=-1)
    fo.write(j);
    }while(j!=-1);
    f.close();
    fo.close();
    }
    }
    class move
    {
    public void move()throws IOException
    {
    File f2;
    Scanner sc=new Scanner(System.in);
    FileInputStream f=null;
    String s=null;
    int i=0;
    do
    {
    i=0;
    System.out.print("nhập địa chỉ file muốn di chuyển: ");
    s=sc.nextLine().trim();

    try{
    f=new FileInputStream(s);
    }catch(FileNotFoundException e)
    {
    i=1;
    System.out.println("không tìm thấy file, nhập lại: ");
    }
    }while(i==1);
    File f1=new File(s);
    FileOutputStream f0=null;
    do
    {
    i=0;
    System.out.print("nhập địa chỉ muốn chuyển file đến : ");
    String ss=sc.nextLine().trim()+"\\\\"+f1.getName();
    try{
    f0=new FileOutputStream(ss);
    }catch(FileNotFoundException e)
    {
    i=1;
    System.out.println("địa chỉ sai, nhập lại: ");
    }
    }while(i==1);
    int j=0;
    do
    {
    j=f.read();
    if(j!=-1)
    f0.write(j);
    }while(j!=-1);
    f.close();
    f0.close();
    f1.delete();
    }
    }
    class delete
    {
    public void delete()throws IOException
    {
    int i=0;
    String s;
    Scanner sc=new Scanner(System.in);
    File f;
    FileInputStream f1=null;
    do{
    i=0;
    System.out.print("nhập file cần xóa: ");
    s=sc.nextLine().trim();
    try
    {
    f1=new FileInputStream(s);
    }catch(FileNotFoundException e)
    {
    i=1;
    System.out.println("không tìm thấy file, nhập lại: ");
    }
    }while(i==1);

    f1.close();
    f=new File(s);
    f.delete();
    }
    }
    public class doghifile {
    public static void main(String[] args)throws Exception {
    Scanner s=new Scanner(System.in);
    System.out.println("---------------------------MENU---------------------------");
    System.out.println("mời bạn nhập: copy/move/delete file: ");
    String st=s.nextLine().trim();
    if(st.compareToIgnoreCase("copy")==0)
    {
    copy c=new copy();
    c.copyfile();
    }
    else if(st.compareToIgnoreCase("move")==0)
    {
    move m=new move();
    m.move();
    }
    else if(st.compareToIgnoreCase("delete")==0)
    {
    delete d=new delete();
    d.delete();
    }
    else
    {
    System.out.println("bạn đã nhập sai");
    System.exit(0);
    }
    }
    }
  8. manhdinh

    manhdinh New Member

    Show Spoiler

    PHP:
    package ByteStream;
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.lang.String;
    import java.util.Scanner;
     
    /**
    *
    * @author Admin
    */
    public class ReadFile {
        public static 
    void Read(String inputthrows IOException{
            
    //Scanner nhap=new Scanner(System.in);
            
    FileInputStream fin null;
            
    //System.out.println("Nhap vao file can doc: ");
            //String a =nhap.nextLine();
            
    try{
                
    fin=new FileInputStream(input);
            } catch(
    FileNotFoundException e){
                
    System.out.println("File not found.");
            } catch(
    ArrayIndexOutOfBoundsException e){
                
    System.out.println("Usage: ShowFile File");
            }
            
    int i;
            do {
                
    i=fin.read();
                if(
    i!=-1){
                    
    System.out.println((chari);
                }
     
            } while (
    i!=-1);
            
    fin.close();
            }
        }
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    /**
    *
    * @author Admin
    */
    public class WriteFile {
        public static 
    void Write(String outputthrows IOException{
            
    FileOutputStream fout null;
            try {
                
    fout =new FileOutputStream(output);
            } catch (
    FileNotFoundException e){
                
    System.out.println("File not found.");
            }
            
    fout.close();
        }
    }
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    /**
    *
    * @author Admin
    */
    public class CopyFile {
        public static 
    void Copy(String input,String outputthrows IOException{
            
    FileInputStream fin=null;
            
    FileOutputStream fout=null;
            try{
                
    fin= new FileInputStream(input);
                
    fout=new FileOutputStream(output);
                
    byte[] buffer=new byte[1024];
                
    int lenght;
                while((
    lenght=fin.read(buffer))>0){
                    
    fout.write(buffer0lenght);
                   
            }
                    
    fin.close();
                    
    fout.close();
                    
    System.out.println("Thanh cong");
           
            }catch (
    Exception e){
                
    System.out.println("Error: "+e.toString());
            }
        }
     
    }
    import java.io.IOException;
    import java.util.Scanner;
     
    /**
    *
    * @author Admin
    */
    public class Demo {
        public static 
    void main(String[] argsthrows IOException {
            
    ReadFile readfile=new ReadFile();
            
    WriteFile wfile=new WriteFile();
            
    CopyFile cfile=new CopyFile();
            
    Scanner nhap= new Scanner(System.in);
            
    System.out.println("******Menu******");
            
    System.out.println("1.Doc File");
            
    System.out.println("2.Ghi File");
            
    System.out.println("3.Copy File");
            
    int chon=nhap.nextInt();
            
    nhap.nextLine();
            switch (
    chon) {
                case 
    1:
                    
    System.out.println("Nhap file can doc: ");
                    
    String input=nhap.nextLine();
                    
    readfile.Read(input);
                    break;
                case 
    2:
                    
    System.out.println("Nhap file output: ");
                    
    String output=nhap.nextLine();
                    
    wfile.Write(output);
                case 
    3:
                    
    System.out.println("Nhap file input: ");
                    
    String vao=nhap.nextLine();
                    
    System.out.println("Nhap file output: ");
                    
    String ra=nhap.nextLine();
                    
    cfile.Copy(vaora);
                default:
                    
    System.out.println("Ban nhap sai roi.");
            }
           
     
        }
     
    }
  9. haizax

    haizax New Member

    Show Spoiler

    PHP:
    //Biến màn hình console thành màn hình lệnh như sau:
    //- Nếu bạn gõ từ "copy", thì chương trình sẽ hỏi địa chỉ file cần copy,
    //bạn gõ địa chỉ file cần copy vào, nếu không tồn tại sẽ bắt nhập lại,
    //nếu tồn tại sẽ hỏi địa chỉ file đích,
    //sau đó chương trình sẽ copy file đó. Tương tự với các lệnh "move", "delete"
    package bai27;
    import java.io.*;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    public class 
    Bai27 {
        public static 
    void main(String[] argsthrows IOException{
            
    Scanner in = new Scanner(System.in);
            
    String a,nguon,dich,nguon1 null,dich1,xoa null;
            
    System.out.println("Nhập lệnh muốn thực hiện(copy/move/delete): ");
            
    in.nextLine();
           
            
    FileOutputStream fout null;
            
    FileInputStream fin null;
           
            if(
    a.equals("copy")){
                for (
    int i 01i++) {
                
    System.out.println("Nhập địa chỉ file cần copy: ");
                
    nguon in.nextLine();
               
                try {
                    
    fin = new FileInputStream(nguon);
                } catch (
    FileNotFoundException ex) {
                    
    System.out.println("Địa chỉ file không tồn tại. Nhập lại");
                    
    i--;
                }
                }
                for (
    int i 01i++) {
                    
    System.out.println("Copy đến: ");
                    
    dich in.nextLine();
                   
                    try {
                        
    fout = new FileOutputStream(dich);
                    } catch (
    FileNotFoundException ex) {
                        
    System.out.println("Địa chỉ file không tồn tại. Nhập lại");
                        
    i--;
                    }catch(
    ArrayIndexOutOfBoundsException ex){
                        
    System.out.println("Lỗi");
                    }
                }
               
                try{
                
    int x;
                do{
                    
    fin.read();
                    if(
    !=-1){
                        
    fout.write(x);
                    }
                }while(
    != -1);
            }catch(
    IOException ex){
                    
    System.out.println("Error File");
            }
                
    fin.close();
                
    fout.close();
        }else if(
    a.equals("move")){
                for (
    int i 01i++) {
                    
    System.out.println("Nhập địa chỉ file cần di chuyển: ");
                    
    nguon1 in.nextLine();
                    try {
                    
    fin = new FileInputStream(nguon1);
                } catch (
    FileNotFoundException ex) {
                    
    System.out.println("Địa chỉ file không tồn tại. Nhập lại");
                    
    i--;
                }
                }
                for (
    int i 01i++) {
                    
    System.out.println("Chuyển đến: ");
                    
    dich1 in.nextLine();
                   
                    try {
                        
    fout = new FileOutputStream(dich1);
                    } catch (
    FileNotFoundException ex) {
                        
    System.out.println("Địa chỉ file không tồn tại. Nhập lại");
                        
    i--;
                    }catch(
    ArrayIndexOutOfBoundsException ex){
                        
    System.out.println("Lỗi");
                    }
                }
               
                try{
                
    int x;
                do{
                    
    fin.read();
                    if(
    !=-1){
                        
    fout.write(x);
                    }
                }while(
    != -1);
            }catch(
    IOException ex){
                    
    System.out.println("Error File");
            }
                
    fin.close();
                
    fout.close();
                try{
                    
    File file = new File(nguon1);
                    if(
    file.delete()){
                        
    System.out.println(file.getName());
                    }else{
                        
    System.out.println("Không thể xóa file gốc");
                    }
                    }catch(
    Exception e){
                        
    System.out.println("Lỗi"+e);
                }
               
        }else if(
    a.equals("delete")){
                for (
    int i 01i++) {
                    
    System.out.println("File cần xóa là: ");
                    
    xoa in.nextLine();
                    try{
                        
    fin = new FileInputStream(xoa);
                    }catch(
    FileNotFoundException ex){
                        
    System.out.println("File không tồn tại. Nhập lại!!!");
                        
    i--;
                    }
                }
                
    fin.close();
                try{
                    
    File file1 = new File(xoa);
                    if(
    file1.delete()){
                        
    System.out.println(file1.getName()+" xóa");
                    }else{
                        
    System.out.println("Không thể xóa file");
                    }
                }catch(
    Exception ex){
                    
    System.out.println("Lỗi "ex);
                }
               
        }else{
                
    System.out.println("Nhập sai lệnh !!!");
        }
    }
    }
    LeManh thích bài này.
  10. chiennv

    chiennv New Member

    Bạn nào giải thích hộ mình tại sao lại có return trong catch() thế?
  11. ZaghiNguyen

    ZaghiNguyen Administrator

    Ok đã tham khảo 1 số ý kiến chuyên gia và có 1 số nhận xét như sau:
    Return trong catch tránh được mấy lỗi ở phía sau:
    VD:NullPointerException ở hai câu lệnh close cho cái fin va fout ay
    cai return trong catch
    fin = new FileInputStream("E:\\in.mp3");
    fout = new FileOutputStream("E:\\out.mp3");

    Nếu exception xảy ra mà ko có return thì code sẽ gặp giá trị Num values ở fin.close(); fout.close() phía dưới.
    NHATTA, TaHuy, HaiHack 1 thành viên khác thích bài này.
  12. starrynight

    starrynight New Member

    Làm sao gửi lên giữ nguyên màu sắc của code vậy mọi người?
    Show Spoiler

    Mã:
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javaapplication1;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    /**
    *
    * @author MissKieu
    */
    public class copytuconsole {
        private String InputPath;
        private String OutputPath;
        private String request;
     
        Scanner inp = new Scanner(System.in);
     
        public void copyFile(String inputPath, String outputPath) throws IOException{
            FileInputStream fInp;
            FileOutputStream fOut;
         
            try {
                fInp = new FileInputStream(InputPath);
            } catch (FileNotFoundException e) {
                System.out.println("Input File not found");
                return;
            }
         
            try {
                fOut = new FileOutputStream(OutputPath);
            } catch (FileNotFoundException e) {
                System.out.println("Error opening OutputFile");
                return;
            }
         
            int i;
            do {
                i = fInp.read();
                if (i != -1) {
                    fOut.write(i);
                }
            } while (i != -1);
            fInp.close();
            fOut.close(); 
            System.out.println("Finish copy file");
        }
     
        public void deleteFile(String path){
            try {
                File file = new File(path);
                if (file.delete()) {
                    System.out.println(file.getName() + " is deleted!");
                } else {
                    System.out.println("Delete operation is failed.");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public void moveFile(String inputPath,String outputPath) throws IOException{
            copyFile(inputPath, outputPath);
            deleteFile(inputPath);
            System.out.println("finished move file");
        }
     
        void xulyRequest() throws IOException{
            System.out.println("Nhap yeu cau:copy, delete, move, exit?");
            request = inp.nextLine();
            switch(request){
                case "copy":
                    System.out.println("Nhap duong dan file copy: " );
                    InputPath = inp.nextLine();
                    System.out.println("Nhap duong dan dich den: " );
                    OutputPath = inp.nextLine();
                    copyFile(InputPath, OutputPath);
                    xulyRequest();
                    break;
                case "delete":
                    System.out.println("Nhap duong dan file delete: " );
                    InputPath = inp.nextLine();
                    deleteFile(InputPath);
                    xulyRequest();
                case "move":
                    System.out.println("Nhap duong dan file copy: " );
                    InputPath = inp.nextLine();
                    System.out.println("Nhap duong dan dich den: " );
                    OutputPath = inp.nextLine();
                    copyFile(InputPath, OutputPath);
                    deleteFile(InputPath);
                    xulyRequest();
                case "exit":
                    System.out.println("ban da thoat khoi chuong trinh");
                    break;
                default: xulyRequest();
            }
        }
     
        public static void main(String[] args) throws IOException {
            copytuconsole a = new copytuconsole();
            a.xulyRequest();
        }
    }
    
  13. Kroes

    Kroes New Member

    Show Spoiler

    PHP:
    /*
    * To change this license header, choose License Headers in Project Properties.
    * To change this template file, choose Tools | Templates
    * and open the template in the editor.
    */
    package javabasic.demo;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.util.Scanner;
     
    /**
    *
    * @author SystemAdmin
    */
    public class BaiTap {
     
        
    FileInputStream fin;
        
    FileOutputStream fout;
     
        public 
    void copy(String str1String str2throws IOException {
            try {
                try {
                    
    fin = new FileInputStream(str1);
                } catch (
    FileNotFoundException exc) {
                    
    System.out.println("File Not Found");
                    return;
                }
     
                try {
                    
    fout = new FileOutputStream(str2);
                } catch (
    FileNotFoundException exc) {
                    
    System.out.println("Error Opening Output File");
                    return;
                }
            } catch (
    ArrayIndexOutOfBoundsException exc) {
                
    System.out.println("Usage: CopyFile From To");
                return;
            }
     
            
    int i;
            try {
                do {
                    
    fin.read();
                    if (
    != -1) {
                        
    fout.write(i);
                    }
                } while (
    != -1);
            } catch (
    IOException exc) {
                
    System.out.println("File Error");
            }
            
    fin.close();
            
    fout.close();
        }
     
        public 
    void move(String str1String str2throws IOException {
            try {
                try {
                    
    fin = new FileInputStream(str1);
                } catch (
    FileNotFoundException exc) {
                    
    System.out.println("File not found");
                    return;
                }
     
                try {
                    
    fout = new FileOutputStream(str2);
                } catch (
    FileNotFoundException exc) {
                    
    System.out.println("Error Opening Output file");
                    return;
                }
            } catch (
    ArrayIndexOutOfBoundsException exc) {
                
    System.out.println("Usage: MoveFile From To");
            }
     
            
    int i;
            try {
                do {
                    
    fin.read();
                    if (
    != -1) {
                        
    fout.write(i);
                    }
                } while (
    != -1);
            } catch (
    IOException exc) {
                
    System.out.println("File Error");
            }
            
    File f = new File(str1);
            
    fin.close();
            
    fout.close();
            
    f.delete();
        }
     
        public 
    void delete(String str1throws IOException {
            try {
                
    fin = new FileInputStream(str1);
            } catch (
    FileNotFoundException exc) {
                
    System.out.println("File not Found");
            }
     
            
    File f = new File(str1);
            
    fin.close();
            
    f.delete();
        }
     
        public static 
    void main(String[] argsthrows IOException {
            
    String cmd;
            
    Scanner input = new Scanner(System.in);
            
    System.out.println("");
            
    cmd input.nextLine();
     
            
    BaiTap a = new BaiTap();
     
            
    String cmdArr[] = cmd.split(" ");
     
            switch (
    cmdArr[0]) {
                case 
    "copy":
                    
    a.copy(cmdArr[1], cmdArr[2]);
                    break;
                case 
    "move":
                    
    a.move(cmdArr[1], cmdArr[2]);
                    break;
                case 
    "del":
                    
    a.delete(cmdArr[1]);
                    break;
                default:
                    
    System.out.println("\""+cmdArr[0]+"\""+" command is not found");
                    break;
            }
        }
    }
  14. thanhpl

    thanhpl New Member

    Show Spoiler

    PHP:
        public static void main (String [] argsthrows IOException{
           
            
    Scanner input = new Scanner(System.in);
            
    String command;
           
            
    boolean haveCommand true;
            do {           
            
    System.out.print("Go lenh ban muon su dung ( copy, move, delete): ");
            
    command = (input.nextLine().trim());
            
    haveCommand true;
            switch ( 
    command){
                case 
    "copy"copy();
                    break;
                case 
    "move"move();
                    break;
                case 
    "delete"delete();
                    break;           
                default:
                    
    haveCommand false;
                    break;
            }
            } while ( !
    haveCommand );
        }
     
        public static 
    void delete(){
            
    String path;
            
    Scanner input = new Scanner(System.in);
            
    boolean haveFile;
            
    File f;
           
            do {
            
    haveFile true;
            
    System.out.print("Go duong dan file ban muon delete: ");
            
    path input.nextLine();
            
    = new File(path);
            if ( !
    f.exists()) {
                
    haveFile false;
                
    System.out.println("File not found");
            }
            }  while (!
    haveFile);
            
    f.delete();
            
    System.out.println("Have finished delete file");
        }
        public static 
    void move() throws IOException {
            
    boolean haveInput;
            
    FileInputStream fin null;
            
    FileOutputStream fout null;
           
            
    Scanner input = new Scanner(System.in);
            
    String path1path2;
            
    File f;
            do {
                
    haveInput true;
                
    System.out.print("Go duong dan file ban muon move: " );
                
    path1 input.nextLine().trim();
                
    = new File(path1);
                if ( !
    f.exists())
                {
                    
    haveInput false;             
                    
    System.out.println("File not found");
                }
            } while (!
    haveInput);
            
    System.out.print("Go duong dan file ban muon move den: ");
            
    path2 input.nextLine().trim();
            try {
                
    fin = new FileInputStream(path1);
            } catch (
    FileNotFoundException ex) {
                
    Logger.getLogger(FileProcess.class.getName()).log(Level.SEVEREnullex);
            }
            try {
                
    fout = new FileOutputStream(path2);
            } catch (
    FileNotFoundException ex) {
                
    Logger.getLogger(FileProcess.class.getName()).log(Level.SEVEREnullex);
            }
            
    int i;
            do {
                
    fin.read();
                if ( 
    != -1)
                
    fout.write(i);
            } while (
    != -1);
           
            
    fin.close();
            
    fout.close();
            
    f.delete();
        }
     
        public static 
    void copy() throws IOException{
            
    boolean haveInput;
            
    FileInputStream fin null;
            
    FileOutputStream fout null;
           
            
    Scanner input = new Scanner(System.in);
            
    String  path1path2;
            do {
                
    haveInput true;
                
    System.out.print("Go duong dan file ban muon copy : ");
                
    path1 input.nextLine().trim();
                
    File f = new File(path1);
                if ( !
    f.exists())
                {
                    
    System.out.println("File not found");
                    
    haveInput false;
                }
               
            } while (!
    haveInput);
            
    System.out.print("Go duong dan file ban muon tao ra: ");
            
    path2 input.nextLine().trim();
            
    int i;
            try {
                
    fin = new FileInputStream(path1);
            } catch (
    FileNotFoundException ex) {
                
    Logger.getLogger(FileProcess.class.getName()).log(Level.SEVEREnullex);
            }
            
    fout = new FileOutputStream(path2);
           
            do {
                    
    fin.read();
                    if ( 
    != -1)
                    
    fout.write(i);
            } while (
    != -1);
        
    fin.close();
        
    fout.close();
       
            
    System.out.println("Finish copy");
        }
    tuanleedragon thích bài này.
  15. brucelee

    brucelee New Member

    Bai minh lam:
    Show Spoiler

    PHP:
    package nhansu;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Scanner;
    public class 
    LuongTrongJava {
        
    Scanner input=new Scanner(System.in);
        public 
    void copy(String st1,String st2throws IOException{
            
    FileInputStream f1;
            
    FileOutputStream f2;
            
    int i;
            try{
                
    f1= new FileInputStream(st1);
            }
            catch(
    FileNotFoundException exc){
                
    System.out.println("file khong ton tai");
                return;
            }
            try{
                
    f2=new FileOutputStream(st2);
            }
            catch(
    FileNotFoundException exc){
                
    System.out.println("loi 1");
                return;
            }
            try{
                do{
                    
    i=f1.read();
                    
    f2.write(i);
                }
                while(
    i!=-1);
            }
            catch(
    IOException exc){
                
    System.out.println("loi 2");
            }
        }
        public 
    void xuLiCopy() throws IOException{
         
            
    System.out.print("file nguon:");
            
    String st2=input.nextLine();
            
    System.out.print("file dich:");
            
    String st3=input.nextLine();
            
    copy(st2,st3);
        }
        public 
    void xuLiMove() throws IOException{
            
    System.out.print("thu muc chua file can move:");
            
    String st1=input.nextLine();
            
    System.out.print("ten file:");
            
    String st2=input.nextLine();
            
    System.out.print("ban muon chuyen file do den thu muc nao:");
            
    String st3=input.nextLine();
            
    File f=new File(st3+"\\"+st2);
            
    f.createNewFile();
            
    copy(st1+"\\"+st2,st3+"\\"+st2);
            
    File f2=new File(st1+"\\"+st2);
            
    f2.delete();
        }
        public static 
    void main(String[]argsthrows IOException{
            
    LuongTrongJava a=new LuongTrongJava();
            
    Scanner input=new Scanner(System.in);
            
    System.out.println("Ban muon lam gi?(copy hay move)");
            
    String st=input.nextLine();
            if(
    st.equals("copy"))
                
    a.xuLiCopy();
            if(
    st.equals("move"))
                
    a.xuLiMove();
        }
    }
  16. ShivaZ

    ShivaZ New Member

    Bài của mình các bạn xem có góp ý gì thêm nhé. Sử dụng command line như:
    cp \\path1 \\path2
    mv \\path1 \\path2
    dl \\path1
    Tự tạo file để copy va mv khi không tìm thấy đường dẫn của path2

    Show Spoiler
    PHP:
    package controlFile;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    public class 
    FileControl {
        private 
    byte [] commandInput = new byte[100];
        private 
    char [] arrChar = new char[100];
        private 
    String path1;
        private 
    String path2;
        private 
    String commandLine;
        public 
    FileControl() {
       
        }
        
    /* Method of FileControl Class*/
        
    public void getCommand() throws IOException{
            
    System.out.println("Put command: ");
            
    System.in.read(commandInput);
            
    // Change command form byte to char
            
    for ( int i=0i<commandInput.lengthi++ ) {
                
    arrChar[i] = (charcommandInput[i];
                
    //Debug read console
                //System.out.print( "" + arrChar[i] );
            
    }
            
    // convert char to string
            
    commandLine = new String(arrChararrChar.length);
            
    commandLine commandLine " ";
            
    arrChar commandLine.toCharArray();
        }
        
    // Copy File
        
    @SuppressWarnings("resource")
        public 
    void copyFile() throws IOException{
            
    int i=3;
            while ( 
    arrChar[i] != ' ') {
                  
    i++;
            }
            
    path1 = new String(arrChar3i-3);
            
    path1 path1.trim();
            
    path2 = new String(arrChari+1arrChar.length-i-1);
            
    path2 path2.trim();
            
    //System.out.println("Debug: " + path1);
            //System.out.println("Debug: " + path2 + " " + command.length);
            
    FileInputStream fin ;
            
    FileOutputStream fout;
            
    // access to file input
            
    try {
                try {
                    
    //fin = new FileInputStream("F:\\tungn1.txt");
                    
    fin = new FileInputStream(path1);
                } catch ( 
    FileNotFoundException exc ) {
                    
    System.out.println("File not found in path " path1);
                    return;
                }
                
    // access to file output
                
    try {
                    
    //fout = new FileOutputStream("E:\\copy.txt");
                    
    fout = new FileOutputStream(path2);
                } catch ( 
    FileNotFoundException exc ) {
                    
    //System.out.println("File not found in path " + path2);
                    
    File fcopy = new File(path2);
                    
    fcopy.createNewFile();
                    
    fout = new FileOutputStream(path2);
                    return;
                }
            } catch ( 
    ArrayIndexOutOfBoundsException exc) {
                
    System.out.println("" exc);
                return;
            }
     
            
    // copy file
            
    int j=0;
            do {
                
    fin.read();
                if ( 
    != -) {
                    
    fout.write(j);
                }
            } while ( 
    != -);
            
    fin.close();
            
    fout.close();
            
    System.out.println("Finish");
        }
     
        
    // Move File
        
    public void moveFile() throws IOException {
            
    copyFile();
            
    File fdel;
            
    fdel = new File(path1);
            
    fdel.delete();
        }
        
    // Delete File
        
    public void deleteFile() throws IOException {
            
    File fdel;
            
    byte[] confirm = new byte[100];
            
    int i 3;
            while ( 
    arrChar[i] != ' ' ) {
                
    i++;
            }
            
    String path = new String(arrChar3i-3);
            
    path path.trim();
            
    fdel = new File(path);
            
    System.out.println("Do you want to delete file " path " ?" );
            
    System.in.read(confirm);
            if ((
    charconfirm[0] == 'Y' || (charconfirm[0] == 'y') {
                
    fdel.delete();
                
    System.out.println("Delete complete");
            } else {
                
    System.out.println("Cancel delete file " path);
            }
        }
        
    // choose command
        
    public void chooseCommand() throws IOException{
            
    getCommand();
            
    String commandLine = new String(arrChar02);
            if (
    commandLine.equalsIgnoreCase("cp")) {
                
    copyFile();
            } else {
                if (
    commandLine.equalsIgnoreCase("mv")) {
                    
    moveFile();
                } else {
                    if (
    commandLine.equalsIgnoreCase("dl")) {
                        
    deleteFile();
                    } else {
                        
    System.out.println("Can not excute this command " commandLine);
                    }
                }
            }
        }
    }
     
    // Main class
    package controlFile;
     
    import java.io.IOException;
     
    public class 
    Main {
        public static 
    void main(String[] argsthrows IOException {
            
    FileControl file1 = new FileControl();
            
    file1.chooseCommand();
        }
    }
     
  17. sasaki

    sasaki New Member

    cho mình hỏi chút, tại sao trong đoạn này biến i có kiểu int mà vẫn convert đc sang dạng char (a,b,c,...) thế??
    Mã:
    int i;
            do {
                i = f.read();
                if (i != -1) {
                    System.out.print((char) i);
                }
            } while (i != -1);
  18. TienDatII

    TienDatII New Member

    Theo mình nghĩ biến int i sẽ nhận gía trị trả về là các số 0 1 sau đó lệnh in print sẽ dịch i ra thành dạng char
    Mình đã bỏ (char) và kết quả ra toàn là số thôi
  19. thanhdat86

    thanhdat86 New Member

    My Exercise (open)
    PHP:
    package hoc.java;
    import java.io.FileInputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class 
    Unit27 {
     
    public static 
    void main(String[] argsthrows IOException {
    int chucNang;
    Scanner in = new Scanner(System.in);
    System.out.println("Moi ban chon chuc nang:");
    System.out.println("1: Copy");
    System.out.println("2: Move");
    System.out.println("3: Delete");
    chucNang in.nextInt();
    try {
    in.nextLine();
    switch (
    chucNang) {
    case (
    1): {
    System.out.println("Nhap Source File:");
    String src in.nextLine();
    System.out.println("Nhap Dest File:");
    String dest in.nextLine();
    Copy(srcdest);
    }
    case (
    2): {
    System.out.println("Nhap Source File:");
    String src in.nextLine();
    System.out.println("Nhap Dest File:");
    String dest in.nextLine();
    Copy(srcdest);
    Delete(src);
    }
    case (
    3): {
    System.out.println("Moi ban nhap file can xoa");
    String file in.nextLine();
    Delete(file);
     
    }
    default:
    return;
    }
    } catch (
    IOException exc) {
    System.out.println("Co Loi Xay Ra");
    return;
    }
     
    }
     
    public static 
    void Delete(String filename) {
    File f = new File(filename);
    f.delete();
    }
     
     
    public static 
    void Copy(String str1String str2throws IOException {
    FileInputStream fin;
    FileOutputStream fout;
    try {
    try {
    fin = new FileInputStream(str1);
    } catch (
    FileNotFoundException exc) {
    System.out.println("File Not Found");
    return;
    }
    try {
    fout = new FileOutputStream(str2);
    } catch (
    FileNotFoundException exc) {
    System.out.print("Err Open File");
    return;
    }
    } catch (
    ArrayIndexOutOfBoundsException exc) {
    System.out.print("Usage: CopyFile From to");
    return;
    }
     
    // copy
    int i;
    try {
    do {
    fin.read();
    if (
    != -1) {
    fout.write(i);
    }
    } while (
    != -1);
    } catch (
    IOException exc) {
    System.out.print("Copy file err");
    }
    fin.close();
    fout.close();
     
    }
     
     
     
     
    }
  20. zquangu112z

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

    Của mình.
    PHP:
    package streamFile;
     
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class 
    CopyApp {
    public static 
    void main(String[] argsthrows IOException {
    Scanner inp=new Scanner(System.in);
    String str,addIn,addOut;
    int k=1;//gan vao lenh do_while
    FileInputStream fi;
    FileOutputStream fo;
    System.out.println("Write 'copy' if you want to copy... ");
    str=inp.nextLine();
    if(
    str.trim().equals("copy")||str.trim().equals("Copy")){
    System.out.println("let put the address: ");
    addIn=inp.nextLine();
    //Buoc 2 nhap ten file vao kiem tra xem file co ton tai hay ko.
     
    do{
    try{
    fi=new FileInputStream(addIn);
    k=2;
    }
    catch(
    FileNotFoundException e){
    System.out.println("File is not available! Please try again:... ");
    return;
    }
    }while(
    k==1);
    //hoi file dich
    System.out.println("Where do you want to copy?... ");
    addOut=inp.nextLine();
    do{
    try{
    fo=new FileOutputStream(addOut);
    k=1;
    }
    catch(
    FileNotFoundException e){
    System.out.println("File is not available! Please try again:... ");
    return;
    }
    }while(
    k==2);
    //copy
    int i;
    do{
    i=fi.read();
    if(
    i!=-1)
    fo.write(i);
    }while(
    i!=-1);
     
    }
    }
    }

Chia sẻ trang này