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(); } } } } }