No.14 FileInputSteam/FileOutputStream

  • FileOutputStream(文件輸出流)操作對象是一個文件。

(1)構造函數
構造函數按接收參數來分可分為:
1.File對象。
1)public FileOutputStream(File file)
2)public FileOutputStream(File file, boolean append)
2.表示文件地址的String字符串。
1) public FileOutputStream(String name)
2) public FileOutputStream(String name, boolean append)
(2)寫方法write()
write返回值:
1)如果沒有寫完相應內容,每返回的是每次的寫入(byte型)內容;
2)如果寫到內容結尾,返回-1;
write方法按照接收參數方法分類可以分為:
1)public void write(byte b[])接受一個數組對象,將數組中對象中的內容輸出到文件中。
2)public void write(byte b[], int off, int len),將數組中的off角標開始后的len個字節寫入。
3)public void write()不接收任何對象,每次寫入一個字節8byte數據。
用1)相比于3)可以提高效率,
(3)寫完后需要close()關閉輸出流。

(4)例子:

// 第一步指定輸出流位置
File file = new File("d:\\text.txt");
//使用FileOutputStream創建輸出流
FileOutputStream out = new FileOutputStream(file);
//指定寫入數據,注意write方法只接受byte[],如果是其他類型變量需要先存儲在byte數組內
byte[] ob = "hallo java!".getBytes();
//調用write方法寫入數據
out.write(ob);
out.close();

注意:如果采用上述FileOutputStream方法,多次寫入會覆蓋原來的文件內容。如果不想覆蓋可采用第二個構造方法,并設置append參數為true;

  • FileOutputStream(文件輸入流)操作對象也是一個文件。

(1)構造函數
1.FileInputStream(File file);
2.FileInputStream(String name);
(2)讀方法read()
1)如果沒有讀到文件內容結尾,每返回的是每次的讀入的(byte型)內容;
2)如果讀到到文件內容結尾,返回-1;
read()方法重載類型:
1)public int read(byte b[])接受一個數組對象,每次從文件中讀取相應byte[]數組大小的內容。
2)public int read(byte b[], int off, int len),每次從文件中讀取len長度的內容到byte數組中,并且從byte數組的off處開始存儲。
3)public int read()不接收任何對象,每次寫入一個字節8bit數據。
用1)相比于3)可以提高效率,
返回值為每次讀入的長度而不是文件中內容的二進制數據
(3)寫完后close(),關閉輸入流;

inputStream的read()雖然返回int,但由于此類是面向字節流的,一個字節占8個位,所以返回 0 到 255** 范圍內的 int 字節值。如果因為已經到達流末尾而沒有可用的字節,則返回值 -1。因此對于不能用0-255來表示的值就得用字符流來讀取!比如說漢字.
Reader類的read()方法返回類型為int :作為整數讀取的字符(占兩個字節共16位),范圍在 **0 到 65535 之間 (0x00-0xffff),如果已到達流的末尾,則返回 -1

(4)例子

// 第一步指定輸出流位置
File file = new File("d:\\text.txt");//hello java!
long length = file.length();
//使用FileInputStream創建輸出流
FileInputStream in = new FileInputStream(file);
//指定一次讀取多長的數據
byte[] ib = new byte[(int) length];
//循環讀取文件內容
int len = 0;
while((len = in.read(ib)) != -1){
    System.out.println(len);//len = 11
 }
System.out.println(len);//len = -1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,537評論 0 17
  • 一、流的概念和作用。 流是一種有順序的,有起點和終點的字節集合,是對數據傳輸的總成或抽象。即數據在兩設備之間的傳輸...
    布魯斯不吐絲閱讀 10,106評論 2 95
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序運行的過程中,可能需要對一些設備進...
    征程_Journey閱讀 978評論 0 1
  • 富文本是什么? 普通的文本展示就是label.text = @"xxxxxx",只能設置顏色、大小、背景色等等。但...
    Tasuka閱讀 3,524評論 0 2