File IO

Similar documents
オブジェクト指向プログラミング・同演習 5月21日演習課題

Prog2_10th

JavaプログラミングⅠ

文字列操作と正規表現

ファイル入出力Ⅱ

そして 取得した OutputStream インスタンスを使い 文字コードは UTF-8 として PrintWriter インスタンスを生成して あとは PrintWriter.append() で書き込みたい文字 列を渡して close() で保存する というだけです ファイルの読込み方法 それで

Prog1_11th

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

例外処理とファイル入出力

PowerPoint Presentation

Microsoft PowerPoint - prog09.ppt

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

Microsoft PowerPoint - prog09.ppt

GEC-Java

PowerPoint プレゼンテーション

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

リファレンス,配列 例外処理

JAVA 11.4 PrintWriter 11.5

Microsoft Word - java a.doc

メソッドのまとめ

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Prog2_9th

デジタル表現論・第6回

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

Prog1_10th

Prog1_15th

PowerPoint Presentation

ファイル入出力Ⅰ


Programming-C-9.key

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

新・明解Java入門

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

r1.dvi

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

Android Layout SDK プログラミング マニュアル

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

JavaプログラミングⅠ

デジタル表現論・第4回

Prog1_13th

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説


Microsoft PowerPoint - OOP.pptx

GEC-Java

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

Graphical User Interface 描画する

日 力力 生 行行 入 入 力力 生 用 方

PowerPoint Presentation

Microsoft Word - CompA-Ex doc

K227 Java 2

Microsoft PowerPoint ppt

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

データ構造とアルゴリズム論

Microsoft PowerPoint - prog03.ppt


Java言語 第1回

ファイル入出力

Microsoft PowerPoint - 第3回目.ppt [互換モード]

II 2 p.2 2 GET POST form action URL Aisatsu 2.1 Servlet GET GET : Query String QueryStringTest.java 1 import java.io.ioexception; 2 import java.io.pri

IIJ Technical WEEK REST API型クラウドストレージサービス「FV/S」の自社への実装

2

Java知識テスト問題

Java における入出力と XML 2011 年 5 月 15 日 海谷治彦 1

2006年10月5日(木)実施

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

ファイル入出力

Prog1_6th

第14回若年者ものづくり競技大会「業務用ITソフトウェア・ソリューションズ」職種 模擬競技課題

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

プログラミング基礎I(再)

JavaプログラミングⅠ

JAVA H13 OISA JAVA 1

プログラムの基本構成

II 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C JavaScript Web CGI HTML 1.2 Servlet Java

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一

Web 1 p.2 1 Servlet Servlet Web Web Web Apache Web Servlet JSP Web Apache Tomcat Jetty Apache Tomcat, Jetty Java JDK, Eclipse

プログラミングA

プログラミング入門1

スライド 1

情報技術 Java の特徴 Java は現在 事務処理計算用プログラミング言語として開発された COBOL に取って代わり C 言語や C++ と並んで 現在最も使われているプログラミング言語の一つである Java は Write Once, Run Anywhere( プログラムを一度作成したらど

データ構造とアルゴリズム論

マルチ OS エンジンを使用した固定記憶域の操作 (テクノロジー・プレビュー) - パート 1

Java講座


Prog1_12th

InputStreamReader は, 入力ストリーム ( 端末 ) からのバイト入力を文字に変換する クラス BufferedReader は, 文字入力ストリームからの入力をバッファリングし, メソッド readline による行単位での入力処理を可能とする 設問プログラム中のに入れる正しい答

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

Transcription:

File IO と例外処理 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科

2 Java での File IO Java での File IO の仕組み 言語 (java.lang パッケージ ) には File IO が含まれない 標準入出力のみ java.io パッケージが別に用意されている

3 例外処理の必要性 IO では エラーが発生しやすい 読めない 書けない ファイルが存在しない 一般的な例外処理は後述

4 標準入出力 標準入力と出力 標準エラー出力 package java.lang; import java.io.*; public final class System { private System() {}// インスタンスは作成不能 public final static InputStream in; public final static PrintStream out; public final static PrintStream err;... }

5 標準入力 : キーボード 一文字ずつの入力 メソッド read() を使用 一行をまとめて読めない 戻り値 正整数 : 文字 -1: 終了 例外発生可能性 IOException StringBuilder b=new StringBuilder(); int c; try { while ((c = System.in.read())!= -1) { b.append((char)c); //1 バイトずつ読んで b に追加 } } catch (IOException ex) { // エラー処理 }

6 標準出力 : 端末へ メソッド print(): 改行なし メソッド println(): 改行あり 引数 原始型 オブジェクト tostring() メソッドを使用して文字列に変換して出力 Object.toString()

7 再検討 入出力先デバイスは多様 標準入出力 ファイル ネットワーク アプリケーションと最終のデバイスの間を階層化 モデル化 アプリケーションから操作しやすいように

8 application String Object reader / writer char stream byte device

9 buffering コンピュータとデバイスでは データ処理速度が大きく異なる 一定以上の量のデータの送受信では緩衝装置 (buffer) が必要 stream で行うか reader/writer で行うか

10 入力 Fileクラスによるファイルの指定 FileInputStream: ストリーム InputStreamReader:Reader BufferedReader:buffering

11 File を指定する クラス File で指定する File file = new File(String filename) インスタンス作成だけでは ファイルの存在や読み書きの可否は不明 本当に読み書きする前に その可能性をチェックすること メソッド boolean canread() boolean canwrite() boolean createnewfile() 処理読み込み可能書き込み可能空のファイルを生成

12 File に対応した InputStream FileInputStream クラス File file; FileInputStream fstream= new FileInputStream(file); 読み込みは byte Int read():1 byte 読む 戻り値が -1 ならば ファイル終端

13 入力ストリームのクラス階層 java.lang.object java.io.inputstream java.io.bytearrayinputstream java.io.fileinputstream java.io.filterinputstream java.io.objectinputstream java.io.pipedinputstream java.io.sequenceinputstream java.io.bufferedinputstream java.io.checkedinputstream java.io.cipherinputstream java.io.datainputstream java.io.deflaterinputstream java.io.digestinputstream java.io.inflaterinputstream java.io.linenumberinputstream java.io.progressmonitorinputstream java.io.pushbackinputstream

14 InputStream の例 // 例外が発生すると呼び出し側に知らせる static public String openinputstream() throws IOException { File file = new File("input.txt");// ファイル指定 // 入力バッファを開く BufferedInputStream in = new BufferedInputStream(new FileInputStream(file)); StringBuilder sb = new StringBuilder(); int n; while ((n = in.read())!= -1) {//1 バイト毎に読み込み sb.append((char) n); } return sb.tostring(); }

15 Reader を使う バイト単位の読出しでは不便 文字 文字列単位での読み込み int read(); // 一文字読み込み int read(char[]);// 文字配列へ読み込み String readline();// 一行を文字列へ読み込み 文字コードを指定できる

16 Reader のクラス階層 java.lang.object java.io.reader java.io.bufferedreader java.io.chararrayreader java.io.filteredreader java.io.pushbackreader java.io.inputstreamreader java.io.pipedstreamreader java.io.stringstreamreader

17 static List<String> openreader() throws IOException { File file = new File("input.txt"); String enc = "UTF-8"; List<String> stringlist = Collections.synchronizedList(new ArrayList<>()); try (BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream(file), enc))) { String line; while ((line = in.readline())!= null) { stringlist.add(line); } } return stringlist; }

18 一行読み込んだ後で スペース 区切りで分割 String[] String.split(String delimiter) 文字列を区切り文字列 delimiter で分けて 結果を文字列配列で返す delimiter には 正規表現が使える 例 : 空白文字 ( 様々な種類 数 ) s+

19 標準入力の wrapping BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try { String line; while ((line = in.readline())!= null) { System.out.print(line); } in.flush(); } catch (IOException ex) { System.err.println(ex); }

20 出力 Fileクラスによるファイルの指定 FileOutputStream: ストリーム OutputStreamWriter:Writer BufferedWriter:buffering

21 OutputStream の基本 バイト単位の書き出し void write(byte[]); flush: 強制排出 void flush(); 閉鎖 void close();

22 出力ストリームのクラス階層 java.lang.object java.io.outputstream java.io.bytearraystream java.io.fileoutputstream java.io.filteroutputstream java.io.objectoutputstream java.io.bufferedoutputstream java.io.dataoutputstream java.io.printoutputstream java.io.pipedoutputstream

23 PrintStream OutputStream に機能を追加 文字列書き出し print(string); print(object) //Object.toStream() が使用される println(string) println(object) 一文字追加 append(char);

24 Writer 文字 文字列をストリームに書く void write(char); void write(string);

25 Writer のクラス階層 java.lang.object java.io.writer java.io.bufferedwriter java.io.chararraywriter java.io.filterwriter java.io.outputstreamwriter java.io.pipedwriter java.io.printwriter java.io.stringwriter

26 Writer の例 BufferedReader in; BufferedWriter out; try { in = new BufferedReader( new InputStreamReader(new FileInputStream(inFile))); out = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(outFile))); } catch (FileNotFoundException ex) {System.err.println(ex);} try { String line; while ((line = in.readline())!= null) { out.write(line); out.newline()l// 改行 } in.close(); out.close(); } catch (IOException ex) {System.err.println(ex);}

27 標準出力の wrapping BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out)); String nl=system.getproperty("line.separator"); try{ out.write( Something ); out.write(nl); }catch(ioexception ex){ }

28 改行 改行コードは OS 依存 LF:UNIX Mac OS X CR+LF:Windows CR:Mac OS 9 以前 Java は OS 非依存にすべき 実行時に OSの改行コードを取得 String nl = System.getProperty("line.separator");

29 例外処理 ファイルの入出力では 実行時エラーが発生 ファイルが読めない ファイルに書けない 例外が発生した後 単に停止するのではなく 適切に処理が継続できるように

30 メソッド間での例外処理の方法の統一が必要 ライブラリとしての挙動の統一 ユーザプログラムでの例外処理の簡素化 例外もクラスとして定義する

31 IOException のクラス階層 java.lang.object java.lang.throwable java.lang.exception java.io.ioexception java.io.filenotfoundexception java.io.eofexception java.io.writeabortedexception

32 例外を捕まえる 例外が発生する可能性のあるメソッドの実行 try ブロックで囲む 例外時の処理 例外を catch する 例 :input stream を開く FileNotFoundException 例 :input stream から読む IOException

33 例外発生に対する処理 メソッド内での処理 try{ 例外が発生する処理 } catch(exception e){ エラー処理 } 呼び出し側への通知 public void method() throws Exception{... 例外が発生する処理 }

34 例外処理を発生させる public void method() throws Exception{... if( 条件 ){ String message = メッセージ ; throw new Exception(message); } }

35 例外の例 ArithmeticException 算術計算の例外 ゼロでの割算など ArrayIndexOutOfBoundsException 不正なインデクスを用いた配列アクセス IllegalArgumentException 不正な引数 NumberFormatException 文字列から数値への変換の例外

36 jdk 中のソースファイルの参照 Netbeans 使用中に jdk のソースを見ることができる 見たいクラス名の文字列をマウスでダブルクリックして選択 マウス右ボタン : ナビゲート ソースへ移動