天天看點

位元組流_FileOutputStream類寫出

輸出位元組流:

------------| OutputStream 此抽象類是表示輸出位元組流的所有類的超類。輸出流接受輸出位元組并将這些位元組發送到某個接收器。 

------------------| FileOutputStream 檔案輸出流是用于将資料寫入 File 或 FileDescriptor 的輸出流

FileOutputSream使用步驟:

    1.找到目标檔案

    2.建立資料 的輸出通道

    3.把資料輸出

    4.關閉資源

FileOutputSream要注意的細節:

    1.使用FileOutputStream(File file)寫入資料的時候,如果目标檔案存在,則在建立FileOutputStream輸出通道的時候會自動建立目标檔案。

    2.使用FileOutputStream(File file)寫入資料的時候,如果目标檔案不存在,則在建立FileOutputSream輸出通道的時候,則會先清空目标檔案中原有的資料,然後再寫入資料。

    3.使用FileOutputStream(File file, boolean append)寫入資料的時候,是在原來資料基礎上追加資料,第二個參數為true。

    4.使用FileOutputStream的write(int i)方法寫資料的時候,雖然接收的是一個int類型(int 4位元組  32位)的資料,但是真正寫出的隻是一個位元組的資料,隻是把低八位的二進制資料寫出,其他二十四位資料全部丢棄。

package com.cn.input;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月24日21:54:03
* Desc:
輸出位元組流:
------------| OutputStream 此抽象類是表示輸出位元組流的所有類的超類。輸出流接受輸出位元組并将這些位元組發送到某個接收器。 
------------------| FileOutputStream 檔案輸出流是用于将資料寫入 File 或 FileDescriptor 的輸出流
FileOutputSream使用步驟:
  1.找到目标檔案
  2.建立資料 的輸出通道
  3.把資料輸出
  4.關閉資源
  
FileOutputSream要注意的細節:
  1.使用FileOutputStream(File file)寫入資料的時候,如果目标檔案存在,則在建立FileOutputStream輸出通道的時候會自動建立目标檔案。
  2.使用FileOutputStream(File file)寫入資料的時候,如果目标檔案不存在,則在建立FileOutputSream輸出通道的時候,則會先清空目标檔案中原有的資料,然後再寫入資料。
  3.使用FileOutputStream(File file, boolean append)寫入資料的時候,是在原來資料基礎上追加資料,第二個參數為true。
  4.使用FileOutputStream的write(int i)方法寫資料的時候,雖然接收的是一個int類型(int 4位元組  32位)的資料,但是真正寫出的隻是一個位元組的資料,隻是把低八位的二進制資料寫出,其他二十四位資料全部丢棄。
         
*/
public class Demo2 {
  public static void main(String[] args) throws IOException {
//    writeTest1();
//    writeTest2();
    writeTest3();
  }
  public static void writeTest1() throws IOException {
    //1.找到目标檔案
    File file = new File("f:/b.txt");
    //2.建立資料 的輸出通道
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    //3.把資料輸出
    fileOutputStream.write('e');
    fileOutputStream.write('o');
    fileOutputStream.write('f');
    fileOutputStream.write('木');
    //4.關閉資源
    fileOutputStream.close();
  }
  //利用位元組數組把資料寫出
  public static void writeTest2() throws IOException {
    //1.找到目标檔案
    File file = new File("f:/b.txt");
    //2.建立資料 的輸出通道
    FileOutputStream fileOutputStream = new FileOutputStream(file, true);//如果為 true,則将位元組寫入檔案末尾處,而不是寫入檔案開始處
    //把資料輸出
    String data= "\r\nccc請叫我木丁西a";
    fileOutputStream.write(data.getBytes());
    //關閉資源
    fileOutputStream.close();
  }
  
  public static void writeTest3() throws IOException {
    //1.找到目标檔案
    File file = new File("f:/b.txt");
    //2.建立資料 的輸出通道
    FileOutputStream fileOutputStream = new FileOutputStream(file);//如果為 true,則将位元組寫入檔案末尾處,而不是寫入檔案開始處
    //把資料輸出
    String data= "abc";
    fileOutputStream.write(data.getBytes(), 0, data.length());
    System.out.println(data.length());
    //關閉資源
    fileOutputStream.close();
  }
}      

驗證問題:使用FileOutputStream的write(

int

 i)方法寫資料的時候,雖然接收的是一個

int

類型(

int

 4位元組  32位)的資料,

    但是真正寫出的隻是一個位元組的資料,隻是把低八位的二進制資料寫出,其他二十四位資料全部丢棄。

package com.cn.input;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月25日15:53:18
* Desc:
驗證問題:使用FileOutputStream的write(int i)方法寫資料的時候,雖然接收的是一個int類型(int 4位元組  32位)的資料,
  但是真正寫出的隻是一個位元組的資料,隻是把低八位的二進制資料寫出,其他二十四位資料全部丢棄。
  例如:00000000-00000000-00000001-11111111    ->    11111111  ->   -1
*/
public class Demo3 {
  public static void main(String[] args) throws IOException {
    writeTest();
    readTest();
  }
  public static void writeTest() throws FileNotFoundException, IOException {
    File file = new File("f:/a.txt");
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    fileOutputStream.write(511);
    fileOutputStream.close();
  }
  
  public static void readTest() throws IOException{
    File file = new File("f:/a.txt");
    FileInputStream fileInputStream = new FileInputStream(file);
    byte[] buff = new byte[1024];
    int length = 0;
    while((length = fileInputStream.read(buff)) != -1){
      System.out.println(Arrays.toString(buff));
    }
    
    fileInputStream.close();
  }
}