1. 程式人生 > >File I/O 檔案輸入輸出流

File I/O 檔案輸入輸出流

InputStream:位元組輸入流(抽象類)--》FileInputStream
int read():
從輸入流一個位元組一個位元組的讀,返回的是該位元組的整數表示形式,如果到了輸入流的末尾,返回-1
int read(byte[ ] b):
從輸入流讀取若個位元組,把這些位元組儲存到陣列b中,返回的是讀取到的位元組數,如果到了輸入流的末尾,返回-1

int read(byte[ ] b , int off , int len):
從輸入流讀取若個位元組,把這些位元組儲存到陣列b中,off指的是位元組陣列中開始儲存資料的起始下標,len指讀取的位元組數目。返回的是讀取到的位元組數,如果到了輸入流的末尾,返回-1


File類
file.createNewFile()    如果檔案存在,則不會建立新檔案
file.exists    判斷檔案是否存在   
dir.mkdir()   建立目錄

一、位元組流
位元組輸入流(讀)
    InputStream
                   read()
                read(byte[ ])
                read(byte[ ],off,len)
                            close()
    FileInputStream
                new FileInputStream(File file)
                new FileInputStream(String path)
位元組輸出流(寫)
    OutputStream
                write(int)
                            write(byte[ ])
                write(byte[ ],off,len)
                            close()
                flush():強制將緩衝區清空
    FileOutputStream
                new FileOutputStream(File file)
                new FileOutputStream(String path)
                new FileOutputStream(String path,boolean append):可以指定覆蓋或追加檔案內容
二、字元流

GBK   GB2312
UTF-8

字元輸入流(讀)
    Reader
                read()
                read(char[ ])
                read(char[ ],off,len)
                            close()
    InputStreamReader : 可以指定字元編碼格式
                new InputStreamReader(InputStream)
                            new InputStreamReader(InputStream,String charSetName)
    FileReader
                new FileReader(File file)
                            new FileReader(String path)
    常見問題:中文亂碼
    原因:檔案編碼格式     和      程式環境的編碼格式不一致
    
    解決方案:
    字元流去讀的時候,指定字元流的編碼格式
    FileReader   無法指定編碼格式,會按照系統預設編碼格式讀
    System.out.println(System.getProperty("file.encoding"));
    所以使用InputStreamReader

     緩衝流BufferedReader
    readLine()
    
字元輸出流(寫)
    Writer
        write(String)
        close()
        flush():清空快取
    OutputStreamReader : 可以指定字元編碼格式
        new OutputStreamWriter(OutputStream)
        new OutputStreamWriter(OutputStream,String charSetName)
    FileWriter:以下兩種構造,都可以過載,指定一個boolean型別的引數,用來指定追加還是覆蓋檔案內容
        new FileWriter(File file)
        new FileWriter(String path)
    
    
    BufferedWriter  :  帶緩衝區的輸出流

三、二進位制檔案的讀寫
DataInputStream
DataOutputStream

四、序列化和反序列化
ObjectInputStream       反序列化   readObject()  -->  型別轉換
ObjectOutputStream        序列化      writeObject(Object)

常見異常:
NotSerializableException :  類沒有實現Serializable介面,不可被序列化

不想被序列化的屬性前面加  transient 遮蔽某些敏感欄位的序列化

相關推薦

File I/O 檔案輸入輸出

InputStream:位元組輸入流(抽象類)--》FileInputStream int read(): 從輸入流一個位元組一個位元組的讀,返回的是該位元組的整數表示形式,如果到了輸入流的末尾,返回-1 int read(byte[ ] b): 從輸入流讀取若個位元組,把這

I/O------字節輸出

-- 是否 java import throws puts oid true stat package io.day03; import java.io.FileOutputStream; import java.io.OutputStream; public class

Java中I/O輸入/輸出)的操作

Java的I/O技術可以將資料儲存到文字檔案、二進位制檔案甚至是ZIP壓縮檔案中,以達到永久性儲存資料的要求。 1、流概述 流是一組有序的資料序列,根據操作的型別,可分為輸入流和輸出流兩種。I/O(Input/Output)流提供了一條通道程式,可以使用這條通道把源中的位元組序列送到目的

vector,string,標準輸入輸出檔案輸入輸出01(C++)

按要求編寫程式。 a) 定義一個結構體型別 Student,如下所示: struct Student { int ID; //學號 string name; //姓名 float score[3]; //三門課程成績 }; b) 編寫一個函式,按照上述結構體定義,依次從鍵盤輸

檔案輸入輸出工具: IOUtils使用總結

檔案輸入輸出流工具: IOUtils使用總結 以前寫檔案的複製很麻煩,需要各種輸入流,然後讀取line,輸出到輸出流...其實apache.commons.io裡面提供了輸入流輸出流的常用工具方法,非常方便。下面就結合原始碼,看看IOUTils都有什麼用處吧! 本文系轉載,原作者:xi

C++ 輸入輸出檔案輸入輸出

輸出到檔案 #include <iostream> #include <fstream> using namespace std; int i = 100; ofstream file("1.txt"); //檔案輸出物件,檔名

java檔案輸入輸出的例子

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public

C++檔案輸入輸出+輸入輸出二進位制檔案(自定義物件)

檔案流類和檔案流物件檔案流是以外存檔案為輸入輸出物件的資料流。輸出檔案流   記憶體->外存輸入檔案流   外存->記憶體檔案流類流的名稱 流的作用 ifstream類 從istream類派生的,用來支援從磁碟檔案的輸入 ofstream類 從ostream

用java寫檔案輸入輸出,實現複製貼上的方法

java中檔案輸入輸出流是FileInputStream和FileOutputStream,檔案輸入流從檔案系統中的某個檔案中獲得輸入位元組,然後可以用輸出流將資料寫入檔案中。 首先建立兩個流的物件: FileInputStream的構造方法有三種過載方式,常用的是F

java之I/O輸入輸出解析

一、流的概述 流是一組有序的資料序列,根據操作的型別,可以分為輸入流和輸出流。I/O流提供了一條通道程式,可以使用這條通道把源中的位元組序列送到目的地。 二、輸入模式 輸出模式圖 三、java流的分類

Java輸入輸出I/O

第十四天: 目標: ------------------------------------------------------------ 第十四章  Stream I/O and Files, 共 44 個slide(411-455); 知識點:一. 流的概念    

I/O 輸入輸出

* java.io.File類用於表示檔案(目錄)   File類只用於表示檔案(目錄)的資訊(名稱、大小等),不能用於檔案內容的訪問 * RandomAccessFile java提供的對檔案內容的訪問,既可以讀檔案,也可以寫檔案。   RandomAccessFile支援

java輸入輸出I/O)總結

 io流的四個基本類       Java.io包中包含了流式I/O所需要的所有類。在java.io包中有四個基本類:InputStream、OutputStream及Reader、Writer類,它們分別處理位元組流和字元流: 基本資料流的I/O 輸入/輸出

JAVA I/O輸入輸出詳解

以Unicode字元為導向的stream,表示以Unicode字元為單位從stream中讀取或往stream中寫入資訊。 區別: Reader和Writer要解決的,最主要的問題就是國際化。原先的I/O類庫只支援8位的位元組流,因此不可能很好地處理16位的Unicode字元流。Unicode是國際化的字符集(

輸入輸出--I/O

1)FileReader類介紹: InputStreamReader類的子類,所有方法(read()等)都從父類InputStreamReader中繼承而來; 2)與InputStreamReader類的區別: 構造方法摘要   (1)FileReader (File  file)     在給定從中讀取資料

Java I/O (1) - 輸入/輸出

puts 概念 網絡連接 iter 輸入 stream put 基礎 個人 先說概念: Java API中,可以從其中讀入一個字節序列的對象叫做輸入流,可以向其中寫入一個字節序列的對象叫做輸出流。這些字節序列的來源地 和 目的地 可以文件、網絡連接甚至內存塊。抽象類Inp

Java中的I/O輸入輸出概述

       流是一組有序的資料序列,根據操作型別,可以分為輸入流和輸出流兩種,Java語言中定義的負責各種輸入輸出的類都被放在java.io包中。其中所有的輸入流類都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的

輸入輸出的讀取輸出 .txt 檔案的 中文亂碼問題 未解決

package interview; import java.io.*; public class TestInOrOutStream { public static void main(String[] args) { int c; try { I

C ++基礎 | 格式化輸出檔案輸入輸出File IO),標頭檔案(Header Files)_3

目錄 格式化輸出 檔案輸入輸出(File IO) 標頭檔案(Header Files) 格式化輸出 要格式化資料,我們可以使用轉義字串(Escape Sequence)也稱字元實體(Character Entity)。這些不需要任何額外的庫。 C ++ 轉義字串

JAVA高階基礎(30)---位元組輸入輸出完成檔案複製

位元組輸入流 InputStream  注:更多方法請查詢API package org.lanqiao.inputstream.demo; import java.io.File; import java.io.FileInputStream; import ja