隙間時間にみる早見表〜OracleJavaSE11 gold | 入出力 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです！

おすすめ書籍（勉強開始時点の書籍最新版を購入しましょう）

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## Java.io.File
ディレクトリやファイルへのパスを表すクラス
```java
File file = new File("絶対パスか相対パス")
```
| メソッド名 | 説明 |
|:-:|:-:|
| exists()  |  存在するか確認 |
| createNewFile()  |  新しいファイルを作る |
|  mkdir() | 新しいディレクトリを作る  |
| getAbsolutePath()  | ファイルやディレクトリの絶対パスを調べる  |
|  listFiles() |  指定位置のファイルやディレクトリの一覧をファイル型配列で取得 |
| isDirectory()  | ディレクトリパスかどうか真偽値を返す  |
| list()  |  指定位置のファイルやディレクトリの一覧を文字列配列で取得 |
| newDirectoryStream() |  ディレクトリ内のファイルやディレクトリを扱うときに使用する |

## FileFilterインタフェース

**accept()**
File型の引数を受け取り真偽値を返す

## Java.ioパッケージ
入出力の基本的なインタフェースやクラス郡がはいっている

## 文字ストリーム
テキスト
## 文字ストリームのクラス郡

### Java.io.reader
#### fileReader
ファイル文字の読み込み
**read()**
コードポイント(1文字の番号)を戻し、終端なら-1になる
#### bufferedReader
文字をバッファに溜め込むことによりネイティブAPIへのアクセスを減らす
**readline()**
文字列を戻し、終端ならnullになる
**lines()**
ストリームの中間操作メソッド(readlineと同様)

### Java.io.writer
#### fileWriter
テキストファイルへの上書き、または新規作成
追記モードにするには第二引数をtrueにする
**write()**
書き込みメソッド

#### bufferedWriter
書き込み内容をバッファに溜め込む
**newLine()**
プログラムに応じて改行コードを追記してくれる
**write()**
書き込み内容をバッファする
**flush()**
強制的にファイルへの書き込みを行う

## バイトストリーム
パソコンが解釈、写真ファイルなど
## バイトストリームのクラス郡
### Java.io.InputStream
#### fileInputStream
ファイルバイトストリームの読み込み

#### bufferedInputStream
バイトストリームをバッファに溜め込むことによりネイティブAPIへのアクセスを減らす
**readNbytes()**
指定したバイト数で区切りバイト配列を返す、終端は要素数0
**readAllbytes()**
すべて読み込みバイト配列を返す、終端は要素数0

#### inputStreamReader
バイトストリームを文字に置き換える

## コンソール入出力のクラス郡
### System
#### inフィールド
コンソールから入力を受け付ける。readlineで入力待ちになる
### Java.io.Console
コンソールからの入力受け取りを簡略化したもの
**System.Console()**
コンソールクラスの呼び出し
**readLine()**
コンソール入力の読み込み、入力内容はコンソールに表示され、文字列で返される
**readPassword()**
コンソール入力の読み込み、入力内容はコンソールに表示されない、文字配列で返される

## Scannerテキストデータ処理
### java.util.Scanner
文字列ストリームを簡単に扱えるようにした便利クラス
**hasNext()**
次に読み込む行があるか確認する
**next()**
一行ずつ読み込む
**useDelimiter()**
引数を改行文字として認識する。パイプを使えば複数選択可能

## シリアライズ Serializable
### java.io.Serializable
実装クラスがシリアライズしなければならないことをJVMに示すためのマーカーインタフェース
### シリアライズ
メモリ上にあるインスタンスをストリームとして出力すること
別名のシリアライズ(直列化)はhas-a関係がガベージコレクションの対象にならないようまとめること
### デシリアライズ
ファイルに書き出された情報をもとにインスタンスを作り直すこと
### マーカーインタフェース
抽象メソッドをひとつも持たない、クラスに何らかの意味を持たせるために利用するインタフェース
### java.io.NotSerializableException
Serializableインタフェースを実装せずにシリアライズしようとした場合の例外
### transientフィールド
シリアライズの対象にならない。
※staticは常に非対称

## ObjectOutputStream
**writeObject()**
シリアライズ(マーカーインタフェース)を実現したインスタンスをファイルに出力する
シリアライズクラスに同名メソッドを記述するとそちらが自動的に呼ばれる(カスタム・シリアライズ)

## ObjectInputStream
**readObject()**
Object型でファイルからオブジェクト生成する。(ダウンキャストすること)
シリアライズクラスに同名メソッドを記述するとそちらが自動的に呼ばれる(カスタム・シリアライズ)

## NIO.2
fileクラスが担っていた、ファイルやディレクトリへのパスを表す機能とファイル操作のための機能が完全に分離したもの
### java.nio.file.pathインタフェース
ファイルやディレクトリへのパスを表す
**toAbstractePath()**
絶対パスの取得

### java.nio.file.pathsクラス
あくまでもPath型のクラスをとりやすくするためのもの
| メソッド名 | 説明 |
|:-:|:-:|
| get()  |  パスの取得、可変長引数のため区切り文字を気にしない書き方も可能、pathを返す |
| resolve()  | pathsに設定したパスの結合  |
| toFile()  | パスからFileクラスを取り出す  |

### java.io.Fileクラス
**topath()**
fileクラスからパスをとりだしpath型で返す

### java.nio.file.filesクラス
ファイル操作
| メソッド名 | 説明 |
|:-:|:-:|
|  exsist() | ファイルまたはディレクトリが存在するか  |
| createFile()  | pathで渡されたファイルを生成する、既にある場合はFileAlreadyExsistException  |
|  createDirectory() |  ディレクトリを作成する、親ディレクトリがなければNoSuchFileException、既にある場合はFileAlreadyExsistException |
|  createDirectories() | 親ディレクトリがなければ作り、ディレクトリを作成する。同じディレクトリがあれば作成しない  |
|  getLastModifedTime() | ファイルの最終更新日時を調べる  |
|  getPosixFilePermissions() |  ファイルのアクセス権を調べる。PosixはIEEEの標準規格、UNIX系OSの仕様を定めたもの |
| delete()  | 存在するファイルやディレクトリを削除  |
| exsistDelete() | 存在を確認して削除  |
| deleteIfExsist()  | パスで表現されたファイルを削除処理し削除できたらtrueを返す  |
| copy() | 第一引数はコピー元のpath型、第二引数はコピー先のpath型  |
| move()  | 第一引数は移動元のpath型、第二引数は移動先のpath型  |
| newBufferReader()  | 読み込みバッファストリームを開く  |
| newBufferWrite()  | 書き込みバッファストリームを開く、オプションを第二引数で指定(OpenOptionインタフェース)  |
| list()  | 一覧をストリーム型で返す  |
| wark()  | 再帰的に階層を探索し一覧を取得する  |
| find()  | 階層と絞り込み条件を渡し、条件付きで再帰的に取得する  |
| lines()  | ファイル内の全ての行を読み込みストリームで返す  |
| readAllLines()  | ファイル内の全ての行を読み込みリストで返す  |
| warkFileTree()  | 第一引数にディレクトリ、第二引数にjava.io.file.FileVisitorを匿名クラスでインスタンス化し、すべての抽象メソッドをオーバーライドし処理のタイミングで実施する  |

## java.io.file.FileVisitor

| メソッド名 | 説明 |
|:-:|:-:|
| preVisitDirectory()  |  ディレクトリに入るとき |
|  postVisitDirectory() | ディレクトリに出るとき  |
| visitFile()  | ファイルに遭遇した時  |
| visitFileFailed()  |  ファイル処理に失敗した時 |

### java.nio.file.SimpleFileVisitor
FileVisitorの4つのメソッドを実現しているが中身のない状態のクラス、特定のメソッドのみ使用したい場合にインスタンス化し、オーバーライドする

## java.nio.file.OpenOptionインタフェース
newBufferedWriterで使用、オプションを指定する。
### standardOpenOptionクラス
列挙型
| 名称 | 説明 |
|:-:|:-:|
| APPEND  | 追記モードでファイルを開く  |
| CREATE  | ファイルが存在しない場合に新しいファイルを開く  |
|  CREATE_NEW |  新しいファイルを作成し、存在する場合は失敗する |
|  DELETE_ON_CLOSE | 閉じる時に削除する  |
| READ  |  読み込みアクセスように開く |