1 / 16

第11回Javaゼミ

第11回Javaゼミ. 11.1 ファイルとディレクトリ 11.2 文字ストリーム 11.3 バッファ付き文字ストリーム. 2006/06/28 神津 健太. 11.1 ファイルとディレクトリ(1). File クラス ファイルまたはディレクトリのプロパティに関する情報をカプセル化。  プロパティには、読み取り及び書き込み許可、前回の修正時刻、および長さが含まれる。  新しいディレクトリの作成、既存のファイルとディレクトリの削除、名前の変更などができる。. File コンストラクタ File(String path )

Download Presentation

第11回Javaゼミ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第11回Javaゼミ 11.1 ファイルとディレクトリ 11.2 文字ストリーム 11.3 バッファ付き文字ストリーム 2006/06/28 神津 健太

  2. 11.1 ファイルとディレクトリ(1) Fileクラス ファイルまたはディレクトリのプロパティに関する情報をカプセル化。  プロパティには、読み取り及び書き込み許可、前回の修正時刻、および長さが含まれる。  新しいディレクトリの作成、既存のファイルとディレクトリの削除、名前の変更などができる。 Fileコンストラクタ File(String path) File(String directoryPath, String filename) File(File directory, String filename) 1つ目の形式は、ファイルまたはディレクトリのパスを指定。 2つ目の形式は、ディレクトリのパスと、そのディレクトリ内のファイル名。 3つ目の形式は、ディレクトリのFileオブジェクトと、そのディレクトリ内のファイル名。 どのコンストラクタもpathまたはfilenameがnullの場合はNullPointExceptionを投げる。

  3. 11.1 ファイルとディレクトリ(2) Fileクラス  また、2つのchar定数、eparatorCharとpatheparatorCharが定義される 。 separatorChar   ファイル名の中でディレクトリとファイルを区切る文字 pathseparatorChar   パスリスト内で構成要素を区切る文字 Fileクラスのインスタンスメソッド boolean canRead() ファイルが存在し、読み取り可能なら真、可能でないなら偽を返す boolean canWrite() ファイルが存在し、書き込み可能なら真、可能でないなら偽を返す boolean createNewFile() 空の新規ファイルを作成。正しく作成されれば真、できなければ偽 boolean delete() ファイルを削除。正しく削除されれば真、できなければ偽 ディレクトリは空でなければ削除できない String getAbsolutePath() ファイルの絶対パスを返す String getCanonicalPath() ファイルの標準パスを返す String getName() ファイルの名前を返す String getParent() ファイルの親を返す String getPath() ファイルのパスを返す

  4. 11.1 ファイルとディレクトリ(3) Fileのメソッドを使用した例 import java.io.*; class FileDemo{ public static void main(String args[]){ try{ System.out.println("pathSeparatorChar = " + File.pathSeparatorChar); System.out.println("SeparatorChar = " + File.SeparatorChar); File file = new File(args[0]); System.out.println("getName() = " + file.getName()); System.out.println("getPath() = " + file.getPath()); System.out.println("canRead() = " + file.canRead()); System.out.println("canWrite() = " + file.canWrite()); } catch(Exception e){ e.printStackTrace(); } } } >java FileDemo c:\tyj\examples\io\FileDemo.java pathSeparatorChar = ; SeparatorChar = \ getName() = FileDemo.java getPath() = c:\tyj\examples\io\FileDemo.java canRead() = true canWrite() = true

  5. 11.2 文字ストリーム(1) ストリーム データのソース(源流)またはデスティネーション(宛先)の抽象的な概念のこと。  文字ストリームとバイトストリームの2つのタイプがある。 バイトストリーム  バイナリデータの読み取りおよび書き込みを行うことができる。 文字ストリーム  文字および文字列のデータの読み取りおよび書き込みを行うことができる。  入力文字ストリームはバイトを文字に変換し、出力文字ストリームは文字をバイトに変換。 Java.ioパッケージで提供される文字ストリーム BufferedReader Reader InputStreamReader FileReader Object BufferedWriter Writer InputStreamWriter FileWriter PrintWriter

  6. 11.2 文字ストリーム(2) Writerクラス  すべての文字出力ストリームで利用できる機能が定義される。 Writerコンストラクタ Writer() Writer(Object obj) 1つ目の形式は、Writeオブジェクトに基づいて同期化を行う。 2つ目の形式は、objに基づいて同期化を行う。 Writeクラスのインスタンスメソッド Abstract void close() 出力ストリームをクローズする(サブクラスで実装しなければならない) throws IOException void write(int c) ストリームにc の下位16ビットを書き込む throws IOException void write(String s) ストリームにs を書き込む throws IOException

  7. 11.2 文字ストリーム(3) OutputStreamWriterクラス Writerを拡張したクラス。文字のストリームをバイトのストリームに変換する。 OutputStreamWriterコンストラクタ OutputStreamWriter(OutputStream os) OutputStreamWriter(OutputStream os, String encoding) osは出力ストリーム、encodingは文字エンコーディングの名前。 1つ目の形式は、ユーザーマシンの既定の文字エンコーディングを使用する。 OutputStreamWriterのメソッド String getEncoding() 文字エンコーディングの名前を返す

  8. 11.2 文字ストリーム(4) FileWriterクラス OutputStreamWriterを拡張したクラス。ファイルに文字を出力する。 FileWriterコンストラクタ FileWriter(String filepath) throws IOException FileWriter(String filepath, boolean append) throws IOException FileWriter(File fileObj) throws IOException FileWriter(File fileObj, boolean append) throws IOException filepathはファイルの完全パス名、 fileObjはファイルを表すFileオブジェクト。 appendが真の場合は、文字はファイルの終わりに付加され、 偽の場合は、ファイルの既存のコンテンツを上書きする。

  9. 11.2 文字ストリーム(5) Readerクラス  すべての文字入力ストリームで利用できる機能が定義される。 Readerクラスのインスタンスメソッド Abstract void close() 入力ストリームをクローズする さらに読み取りをするとIOException throws IOException (サブクラスで実装しなければならない) void mark(int numChars) numChars文字が読み取られるまで有効である入力ストリー throws IOException ムの現行の位置にマークをつける Boolean markSupported() mark() / reset() がこのストリームでサポートされている場合、真を返す int read() throws IOException ストリームから文字を読み取る データが利用可能になるまで待機する boolean ready() 次のread()が待機していない場合、真を返す throws IOException void reset() throws IOException 入力ポインタを、事前に設定されているマークにリセットする int skip(long numChars) 入力のうちのnumCharsバイトを飛ばし、実際に飛ばした文字数を返す throws IOException

  10. 11.2 文字ストリーム(6) InputStreamReaderクラス Readerを拡張したクラス。バイトのストリームを文字のストリームに変換する。 InputStreamReaderコンストラクタ InputStreamReader(InputStream is) InputStreamReader(InputStream is, String encoding) isは入力ストリーム、encodingは文字エンコーディングの名前。 1つ目の形式は、ユーザーマシンの既定の文字エンコーディングを使用する。 InputStreamReaderのメソッド String getEncoding() 文字エンコーディングの名前を返す

  11. 11.2 文字ストリーム(7) FileReaderクラス InputStreamReaderを拡張したクラス。ファイルから文字を入力する。 FileReaderコンストラクタ FileReader(String filepath) throws FileNotFoundException FileReader(File fileObj) throws FileNotFoundException filepathはファイルの完全パス名、 fileObjはファイルを表すFileオブジェクト。 どちらもファイルが見つからない場合はFileNotFoundExceptionを投げる。

  12. 11.2 文字ストリーム(8) ファイル作成プログラムとファイル読み取りプログラムの例 import java.io.*; class FileWriterDemo{ public static void main(String args[]){ try{ FileWriter fw = new FileWriter(args[0]); for(int i=0;i<12;i++){ fw.write("Line " + i + "\n"); } fw.close(); } catch(Exception e){ System.out.println("Exception: " + e); } } } import java.io.*; class FileReaderDemo{ public static void main(String args[]){ try{ FileReader fr = new FileReader(args[0]); int i; while((i = fr.read()) != -1){ System.out.print((char)i); } fr.close(); } catch(Exception e){ System.out.println("Exception: " + e); } } } >java FileWriterDemo output.txt >java FileReaderDemo output.txt Line 0 Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 Line 11

  13. 11.3 バッファ付き文字ストリーム(1)11.3 バッファ付き文字ストリーム(1) BufferedWriterクラス Writerを拡張したクラス。文字ストリームへの出力をバッファに入れる。 BufferedWriterコンストラクタ BufferedWriter(Writer w) BufferedWriter(Writer w, int bufSize) 1つ目の形式は、既定サイズのバッファを使用してバッファ付きストリームを作成する。 2つ目の形式は、バッファのサイズをbufSizeで指定する。 BufferedWriterのメソッド void newLine() throws IOException 改行文字を出力する

  14. 11.3 バッファ付き文字ストリーム(2)11.3 バッファ付き文字ストリーム(2) BufferedReaderクラス Readerを拡張したクラス。文字ストリームからの入力をバッファに入れる。 BufferedReaderコンストラクタ BufferedReader(Reader r) BufferedReader(Reader r, int bufSize) 1つ目の形式は、既定サイズのバッファを使用してバッファ付きストリームを作成する。 2つ目の形式は、バッファのサイズをbufSizeで指定する。 BufferedReaderのメソッド String readLine() throws IOException 文字ストリームから 改行終端文字列を読み取る

  15. 11.3 バッファ付き文字ストリーム(3)11.3 バッファ付き文字ストリーム(3) バッファ付き文字ストリームを用いたファイル作成プログラムとファイル読み取りプログラムの例 import java.io.*; class BufferedWriterDemo{ public static void main(String args[]){ try{ FileWriter fw = new FileWriter(args[0]); BufferedWriter bw = new BufferedWriter(fw); for(int i=0;i<12;i++){ bw.write("Line " + i + "\n"); } bw.close(); } catch(Exception e){ System.out.println("Exception: " + e); } } } import java.io.*; class BufferedReaderDemo{ public static void main(String args[]){ try{ FileReader fr = new FileReader(args[0]); BufferedReader br = new BufferedReader(fr); String s; while((s = br.readLine()) != null){ System.out.println(s); } fr.close(); } catch(Exception e){ System.out.println("Exception: " + e); } } } >java FileWriterDemo output.txt >java FileReaderDemo output.txt Line 0 Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 Line 11

  16. 練習問題 1. >Java SampleWrite output.txt 10000 上記のように実行すると 「ガウス分布に従う乱数のサンプル、10000個のデータを持つoutput.txtというファイルを作成する」 といったプログラムを作成せよ。 また、 output.txt の1行目にはサンプル数を書き込むようにする。 2行目以降から、1行ごとにデータの値1つが書き込まれるようにする。 2. 作成したデータoutput.txtを読み込んでサンプル数、平均、分散を表示させるプログラムを作成せよ。 実行例 >Java SampleRead output.txt サンプル数:10000 平均:0.0020024006550653857 分散:1.0036122768136495 3. 英文のテキストファイルを読み取り、母音のアルファベット(a,i,u,e,o)が何回出現したかを 計算するプログラムを作成せよ。大文字・小文字の区別はしなくてよい。

More Related