輸出位元組流:
------------| 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();
}
}