Java第十八天(練習拷貝文件、高效緩衝字符流、字節流、高效緩衝字節流)

(3)練習拷貝文件java

import s20190517.ReaderTest3;

import java.io.*;

public class CopyDemo {
    public static void main(String[] args) {
        //建立文件
        File file = new File("src\\s20190517\\ReaderTest3.java");
        File file1 = new File("ReaderTest3.java");
        Reader reader = null;
        Writer writer = null;
        try {
            reader = new FileReader(file);
            writer = new FileWriter(file1);
            int len = 1;
            char[] cs = new char[1024];
            while ((len = reader.read(cs)) != -1) {
                writer.write(cs, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

(4)高效輸入流數組

package s20190520;

import java.io.*;

public class BufferedReaderDemo {
    public static void main(String[] args) {
        //建立一個BufferedReader對象
        BufferedReader reader=null;
        try {
//注意BufferedReader構造器傳入的是Reader對象爲參數
            reader=new BufferedReader(new FileReader("src\\s20190520\\CopyDemo.java"));
            /*//讀取一個文本行,邊界是null
            String s = reader.readLine();
            System.out.println(s);*/
            //使用循環讀取整個文件
            String line=null;
            while ((line=reader.readLine())!=null){
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //外層關閉的時候內層自動關閉
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

(5)高效輸出流3d

import java.io.*;

public class BufferedWriterDemo {
    public static void main(String[] args) {
        //建立一個BufferedWriter對象
        BufferedWriter writer=null;
        try {
            writer=new BufferedWriter(new FileWriter("a.txt"));
            writer.write("莫名我就喜歡你");
            writer.newLine();//換行,要寫下一行的時候必須進行這個操做纔會換行
            writer.flush();//刷新
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //外層關閉的時候內層自動關閉
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.io.*;

public class BufferCopyDemo {
    public static void main(String[] args) {
        BufferedReader reader=null;
        BufferedWriter writer=null;
        try {
            reader=new BufferedReader(new FileReader("src\\s20190517\\ReaderTest3.java"));
            writer=new BufferedWriter(new FileWriter("ReaderTest3.java"));
            //定義一個讀取和被寫入的字符串
            String line=null;
            //給字符串賦值,null做爲循環終止條件
            while ((line=reader.readLine())!=null){
                //每次寫入一行換行並刷新
                writer.write(line);
                writer.newLine();
                writer.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(reader!=null){
                    reader.close();
                }
                if(writer!=null){
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

83.字節流對象

import java.io.*;

public class OutputStreamDemo {
    public static void main(String[] args) {
        //建立一個輸出字節流
        OutputStream out = null;
        try {
            byte[] bs={98,99,100,101,102};
            //能夠new File或者直接寫文件名
            out = new FileOutputStream(new File("aa.txt"));
            //寫入單個字符
            out.write(98);
            //寫入整個數組
            out.write(bs);
            //寫入數組的指定部分
            out.write(bs,2,2);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if(out!=null){
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

字節流不須要flushblog

import java.io.*;

public class InputStreamDemo {
    public static void main(String[] args) {
        InputStream in=null;
        try {
            in=new FileInputStream(new File("aa.txt"));
            //讀到的內容也是以assci碼顯示
            int read = in.read();
            //轉化爲字節,讀一個字節,若是是漢字或者其餘國家文字一次讀半個字符可能會出現亂碼
            System.out.println((char)read);
            read = in.read();
            System.out.println((char)read);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(in!=null){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.*;
import java.util.Arrays;

public class InputStreamDemo1 {
    public static void main(String[] args) {
        InputStream in=null;
        try {
            in=new FileInputStream("aa.txt");
            byte[] bs=new byte[6];
            int len = in.read(bs);
            System.out.println("讀取的長度是"+len+"   讀取的內容是"+Arrays.toString(bs) +"   轉換成字符串打印"+new String(bs));
            len = in.read(bs);
            System.out.println("讀取的長度是"+len+"   讀取的內容是"+new String(bs) );
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(in!=null){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamDemo2 {
    public static void main(String[] args) {
        InputStream in=null;
        try {
            in=new FileInputStream("aa.txt");
            //定義一個字符串,若是中間有漢字最好長度儘量長包括
            byte[] bs=new byte[3];
            //定義讀取的長度
            int len = 0;
            while((len=in.read(bs))!=-1){
                System.out.print(new String(bs,0,len));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(in!=null){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

拷貝二進制文件(如壓縮包、圖片)圖片

import java.io.*;

public class CopyDemo1 {
    public static void main(String[] args) {
        OutputStream out=null;
        InputStream in=null;
        try {
            //建立字節流輸入對象,輸入須要讀取的對象參數
            in=new FileInputStream(new File("C:\\Users\\cheung\\Desktop\\DCIM\\P90122-184132.jpg"));
            //建立字節流輸出對象
            out=new FileOutputStream("P90122-184132.jpg");
            //建立數組接收讀取的內容
            byte[] bs=new byte[1024];
            int len=0;
            while((len=in.read(bs))!=-1){
                //將讀取的內容寫入輸出
                out.write(bs,0,len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(in!=null){
                    in.close();
                }
                if(out!=null){
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

84.高效緩衝字節流ci

import java.io.*;

public class BufferedCopyDemo2 {
    public static void main(String[] args) {
        BufferedInputStream in=null;
        BufferedOutputStream out=null;
        try {
            in=new BufferedInputStream(new FileInputStream("C:\\Users\\cheung\\Desktop\\DCIM\\Selfie\\P80812-152904.jpg"));
            out=new BufferedOutputStream(new FileOutputStream("P80812-152904.jpg"));
            byte[] bs=new byte[1024];
            //定義一個讀取長度標識
            int len=0;
            while((len=in.read(bs))!=-1){
                out.write(bs);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(in!=null){
                    in.close();
                }
                if(out!=null){
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
相關文章
相關標籤/搜索