java第十七天(IO流,字符輸入流,字符輸出流)

81.IO流java

IO(Input/Output):輸入和輸出,指的是某個設備或環境進行數據的輸入或者輸出。例如:鍵盤的輸入,再好比顯示器就是輸出設備,輸出圖像。數組

對於java來講輸入輸出問題,java將它抽象成流對象來解決。性能

以遊戲程序爲中心讀取文件就是輸入,寫入文件是輸出。spa

IO流在java中從輸入輸出角度分類:設計

1.輸入流3d

2.輸出流指針

IO流在java中從數據的角度來分類:對象

1.字符流blog

文本,咱們能讀的懂的均可以認爲是字符流。好比:文章,java文件等等遊戲

2.字節流

二進制的數據,這種數據通常用文本打開咱們讀不懂。好比,圖片文件,mp3文件,等等。

82.字符流

文本,咱們能讀的懂的均可以認爲是字符流。好比:文章,java文件等等字符流

(1)字符輸出流

字符輸出流命名規則以Writer結尾

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest {
    public static void main(String[] args) {
        //建立一個文件
        File file = new File("aa.txt");
        //先建立一個輸出爲null
        Writer writer=null;
        ////IO流是須要關閉的,若是不這樣設計就不能關閉資源
        try {
            //在文件中寫
            writer = new FileWriter(file);
            //寫的內容是"HelloWorld!",每次修改都會自動覆蓋上一次寫的內容
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判斷writer不是空防止空指針異常
            if(writer!=null){
                try {
                    //在關閉前會作flush刷新的事情
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest1 {
    public static void main(String[] args) {
        //先建立一個輸出爲null
        Writer writer=null;
        ////IO流是須要關閉的,若是不這樣設計就不能關閉資源
        try {
            //在新建的file文件中寫
            writer = new FileWriter(new File("bb.txt"));
            //寫的內容是"HelloWorld!"
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判斷writer不是空防止空指針異常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

追加

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest1 {
    public static void main(String[] args) {
        File file = new File("aa.txt");
        //先建立一個輸出爲null
        Writer writer=null;
        ////IO流是須要關閉的,若是不這樣設計就不能關閉資源
        try {
            //在file文件中寫,後面是true,表示再寫的內容是追加不是覆蓋
            writer = new FileWriter(file,true);
            //寫的內容是"HelloWorld!"
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判斷writer不是空防止空指針異常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

換行:

輸出換行

把文本寫入文件中\n表明換行

問題是不一樣的環境下換行的方式也不同

Windows: \r\n

Linux:\n

Mac:\r

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest2 {
    public static void main(String[] args) {
        //先建立一個輸出爲null
        Writer writer=null;
        ////IO流是須要關閉的,若是不這樣設計就不能關閉資源
        try {
            //在新建的file文件中寫
            writer = new FileWriter(new File("aa.txt"),true);
            for (int i = 0; i < 100; i++) {
                //寫的內容是"HelloWorld!"
                /*把文本寫入文件中\n表明換行
                        問題是不一樣的環境下換行的方式也不同
                Windows: \r\n
                Linux:\n
                Mac:\r
*/
                writer.write("HelloWorld!\r\n");
                ////每次寫入10個helloworld的時候作一次flush
                if(i % 10 == 0){
                    writer.flush();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判斷writer不是空防止空指針異常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

寫入的五種方法

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest3 {
    public static void main(String[] args) {
        //先建立一個輸出爲null
        Writer writer=null;
        ////IO流是須要關閉的,若是不這樣設計就不能關閉資源
        try {
            //在新建的file文件中寫
            writer = new FileWriter(new File("bb.txt"));
            //寫的內容是"HelloWorld!"
            writer.write("HelloWorld!");
            //寫入單個字符
            writer.write(98);//b
            writer.write('A');
            //寫入字符數組
            writer.write(new char[]{'l','o','v','e'});
            //寫入字符串的一部分
            writer.write("現在這宋老三\t",2,3);
            //寫入字符數組的一部分
            writer.write(new char[]{'我','不','喜','歡','這','世','界','我','只','喜','歡','你'},0,7);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判斷writer不是空防止空指針異常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

(2)字符輸入流

字符輸出流命名規則以Reader結尾

單個字符讀取

import java.io.*;

public class ReaderTest {
    public static void main(String[] args) {
        //建立一個文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一個輸入流對象
        try {
            reader=new FileReader(file);
            //這裏read()出現的異常將下面catch (FileNotFoundException e)改爲 catch (Exception e)就能夠了
            int read = -1;
            read=reader.read();
            System.out.println((char)read);
            read=reader.read();
            System.out.println((char)read);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderTest1 {
    public static void main(String[] args) {
        //建立一個文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一個輸入流對象
        try {
            reader=new FileReader(file);
            //這裏read()出現的異常將下面catch (FileNotFoundException e)改爲 catch (Exception e)就能夠了
            int read = 0;
            //單個讀取性能低
            while ((read=reader.read())!=-1){
                System.out.print((char)read);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Arrays;

public class ReaderTest2 {
    public static void main(String[] args) {
        //建立一個文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一個輸入流對象
        try {
            reader=new FileReader(file);
            //這裏read()出現的異常將下面catch (FileNotFoundException e)改爲 catch (Exception e)就能夠了
            char[] c=new char[12];
            //向字符數組中添數據
            int len = reader.read(c);
            System.out.println("讀取的長度是"+len+"   讀取的內容是"+ Arrays.toString(c));
            len = reader.read(c);
            System.out.println("讀取的長度是"+len+"   讀取的內容是"+ Arrays.toString(c));
            len = reader.read(c);
            System.out.println("讀取的長度是"+len+"   讀取的內容是"+ Arrays.toString(c));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderTest3 {
    public static void main(String[] args) {
        //建立一個文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一個輸入流對象
        try {
            reader=new FileReader(file);
            //這裏read()出現的異常將下面catch (FileNotFoundException e)改爲 catch (Exception e)就能夠了
            int len = 1;
            char[] c=new char[12];
            while((len=reader.read(c))!=-1){
                String str= String.valueOf(c,0,len);
                System.out.print(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
相關文章
相關標籤/搜索