skillup

技術ブログ

Java

入出力操作

投稿日:

Javaの出力処理について書きます。

下記リンクが非常に詳しかったので、これをもとにまとめてみたんですが、咀嚼できてないっぽい・・・・ もう1~2度修正がひつようかも。

http://www.artista.co.jp/article/13478478.html

http://www.artista.co.jp/article/13478481.html

 

Javaのファイル入出力の基本概念

入出力の種類

Javaだけに限りませんが、プログラムの入出力操作というのは大きく分けると、

  • 標準入力・出力(コマンドラインから)
  • ファイル入出力

に分けられるかと思います。この2つの処理についてみていきます。

ストリーム

Javaでは行き先を持ったデータのことをストリームと呼びます。例としては、キーボード→ファイルへの保存や逆にファイル→標準出力などです。そしてJavaでは文字列の操作を行う文字ストリームと画像などのバイナリデータのバイトストリームに分かれます。

変換処理

そのため画像などのバイナリデータはデータの変換処理が必要になってきます。また文字列であっても日本語を扱う場合、文字コード変換を行わないと文字化けのリスクがあります。そのため文字コードなどの変換処理をともなうことが一般的です。

バッファとは

バッファとは緩衝材という意味ですが、Javaの場合、データの入出力元とコンピューターの間に存在する記憶領域を指します。一般的にファイルの入出力(ディスクへのアクセス)というのは時間がかかりますのでスピードや付加を考えるとできるだけ少ないことが望ましいのです。

この回数を減らすために、ディスクと入出力の間にバッファという領域を作りここである程度の領域が使用されたらディスクにアクセスすようにします。こうすることでディスクへのアクセスする回数を減らすことができます。

処理イメージ

基本的な概念がわかったところで実際の処理、コーディングの説明をしたいと思います。

実際のJavaの入出力操作では

  1. 入出力元からの受付
  2. ストリームの変換処理
  3. バッファの使用

と考えると流れがスムーズかと思います。(バッファは使わなくても問題ありませんが実務上はほぼ使うものと思って問題ありません。)

それぞれ下記のようなクラスを使います。

入出力元からの受付処理

標準

入力 System.in()

出力 Syste.out()

 

ファイル

入力  

バイナリ形式

FileInputStream(String filepath)  throws FileNotFoundException

FileInputStream(File fileobj) throws FileNotFoundException

文字データ

FileReader(String filepath) throws FileNotFoundException

FileReader(File fileobj)  throws FileNotFoundException

 

出力

バイナリ形式

FileOutputStream(String filepath) throws FileNotFoundException

FileOutputStream(String filepath, boolean append) throws FileNotFoundException)

apped = trueのときは追加更新(記述しなければ新規作成)

FileOutputStream(File fileobj)  throws FileNotFoundException

文字データ

FileWriter(String filepath) throws FileNotFoundException

FileWriter(String filepath, boolean append) throws FileNotFoundException

FileWriter(File fileobj) throws FileNotFoundException

変換処理

入力 

コンストラクタ

InputStreamReader( InputStream is)

InputStreamReader(InputStreamReader isr, String charSetName)

 

出力 

コンストラクタ

OutputStreamWriter(OutputStream os)

OutputStreamWriter(OutputStream os, String charSetName)

 

バッファの使用

入力 

コンストラクタ

BufferedReader(Reader r)

BufferedReader(Reader r, int bufSize) ※読み込みサイズの指定が可能

メソッド

String readLine() throws IOException

1行分の文字列をかえす。

出力

コンストラクタ

BufferedWriter(Writer w)

BufferedWriter(Buffer w, int bufSize) ※書き込みサイズの指定が可能

 

実践的なコーディング

入力(ファイルの読み込み)

入力(コマンドラインからの入力)※空白実行時に停止します。

出力(ファイルへの出力)

コマンドラインの出力はSystem.out.printでそのまま出力すればOKです。

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JavaEEでリダイレクトを伴うデータ入出力(flashの活用)

JavaEEで何らかの処理を行い、リダイレクトさせる場合、リダイレクト前のデータを保存し、リダイレクト後のページにデータをもちこしたいときなどがあると思います。 オブジェクトの変数自体はスコープアノテ …

no image

Fileオブジェクトの操作

業務でテキストファイルを読み込んで、別形式に変換して出力みたいなアプリを作ったときにファイルオブジェクトについていろいろ調べたんでまとめておきます。 Contents1 ファイルオブジェクトとは?2 …

no image

netbeansのJPQL補助機能

JPAでは基本的に生のSQLではなく、JPQLを使って書きます。 SQLでもタイプミスにイライラさせられることは多いのですが、JPQLはもっとですね・・・爆 そこで使えるのがNetbeansの入力補助 …

no image

あるMapを元にして別のMapを作成

超小ネタ あるMapから別のMapを作る方法です。あるMapをもとに別のMap2を作るときです。 Map<String, String> Map2 = new HashMap<&gt …

no image

StreamのMap処理

Javaのstreamですが知れば知るほどいろいろな機能がありますね。 基本的にプログラムって配列(コレクション含む)とオブジェクトの処理が中心になるので、配列の処理をいかにうまくできるかは非常に大事 …