第18章 テキストファイルの読み書き(後編)
テキストファイルの読み書きに関する基本的な考え方について説明します
homepage
# **テキストファイルの入出力** *** ## **4.テキストをファイルに書き込む** ここからはテキストをファイルに書き込んでいく方法を見てみましょう。まずは基本となる"FileWriter"クラスを使います。 <pre><code>File file = new File(file_name); FileWriter filewriter = new FileWriter(file); </code></pre> <br> ### **4-1.ファイルへの書き込み** ではファイルに書き込みを行います。"write"メソッドを使います。"write"メソッドは書き込む値として文字コードを使ったり、文字列を指定したりといくつか用意されているのですが、ここでは文字列を書き込むメソッドを見てみます。 ```public void write(String str) throws IOException``` 引数に指定した文字列を書き込みます。 ``` try{ File file = new File("C:¥¥Test¥¥test.txt"); FileWriter filewriter = new FileWriter(file); filewriter.write("こんにちは"); }catch(IOException e){ System.out.println(e); } ``` <br> ### **4-2.ファイルを閉じる** ```public void close() throws IOException``` #### **例** [JSample18_4.java] (writetest.txtファイルを事前に作成ください。) ``` package JFile; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class JSample18_4 { public static void main(String args[]) { try { File file = new File("C:\\Test\\writetest.txt"); if (fileFile(file)) { System.out.println("ファイルは存在し、書き込み可能です。"); FileWriter fw = new FileWriter(file); fw.write("おはようございます!\r\n"); fw.write("初めまして、\r\n"); fw.close(); System.out.println("ファイルに書き込みました"); } else { System.out.println("ファイルに書き込めません"); } } catch (IOException e) { System.out.println(e); } } private static Boolean fileFile(File file) { if (file.exists()) { if (file.isFile() && file.canWrite()) { return true; } } return false; } } ``` #### **実行結果** ファイルは存在し、読み込み可能です。<br> ファイルに書き込みました <br> **writetest.txtの内容:**<br> **実行前:**<br> <空白><br> **実行後:**<br> おはようございます!<br> 初めまして、 <br> ### **4-3.ファイルに追加で書き込む** 既にファイルに書かれているテキストは消さずに、ファイルの最後に追加でテキストを書き込む方法を見ていきます。と言っても変更箇所は1箇所だけでFireWriterクラスのオブジェクトを作成する時に、下記のように2番目の引数として"true"を指定するだけです。 <pre><code>File file = new File(file_name); FileWriter filewriter = new FileWriter(file, true); </code></pre> 既にファイルに書かれているテキストは消さずに、ファイルの最後に追加でテキストを書き込む方法を見ていきます。と言っても変更箇所は1箇所だけでFireWriterクラスのオブジェクトを作成する時に、下記のように2番目の引数として"true"を指定するだけです。 #### **例** [JSample18_5.java] <pre><code>package JFile; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class JSample18_5 { public static void main(String args[]) { try { File file = new File("C:\\Test\\writetest.txt"); if (fileFile(file)) { FileWriter fw = new FileWriter(file, true); fw.write("私は○○と申します。\r\n"); fw.write("宜しくお願い致します。\r\n"); fw.close(); System.out.println("ファイルに追加しました"); } else { System.out.println("ファイルに書き込めません"); } } catch (IOException e) { System.out.println(e); } } private static Boolean fileFile(File file) { if (file.exists()) { if (file.isFile() && file.canWrite()) { return true; } } return false; } } </code></pre> #### **実行結果** ファイルに追加しました <br> **writetest.txtの内容:**<br> **実行前:**<br> おはようございます!<br> 初めまして、<br> **実行後:** おはようございます!<br> 初めまして、<br> 私は○○と申します。<br> 宜しくお願い致します。 <br><br> ## **5.標準入力と標準出力** ### **5-1.標準入力、標準出力とは** **・** 標準入力とはキーボードから文字を入力することです。標準入力を使えばキーボードから入力した文字を表示させたり、文字によってプログラムの動作を分岐させることなどができます。 **・** 標準出力ではSystemクラスのoutフィールドを使います。System.outの型はPrintStream型です。 PrintStreamクラスにはprintlnメソッドやprintメソッド、printfメソッドなどが用意されています。おなじみのprintlnメソッドは出力後に改行します。printメソッドは出力後に改行しません。 <br> ### **5-2.InputStreamReaderでキーボードから入力する方法** キーボードから入力するには「InputStreamReaderクラス」、「BufferedReaderクラス」、「readLineメソッド」を組み合わせて使います。 #### **例** [JSample18_6.java] ``` package JFile; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JSample18_6 { public static void main(String[] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println("キーボードから入力してください"); String str = null; try { str = br.readLine(); br.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("入力された文字は「" + str + "」です"); } } ``` #### **実行結果** キーボードから入力してください<br> Hello<改行><br> 入力された文字は「Hello」です <br> ### **5-3.Scannerでキーボードから入力する方法** Scannerで入力を受け付け、nextメソッドで入力された文字を読み取ります。 ### **例** [JSample18_7.java] ``` package JFile; import java.util.Scanner; public class JSample18_7 { public static void main(String[] args) { System.out.println("キーボードから入力してください"); Scanner scan = new Scanner(System.in); String str = scan.next(); System.out.println("入力された文字は「" + str + "」です"); } } ``` #### **実行結果** キーボードから入力してください<br> Hello<改行><br> 入力された文字は「Hello」です <br> ### **5-4.nextIntメソッドで数値を入力する方法** nextメソッドは入力された文字を文字列として読み込みますが、nextIntメソッドは数値として読み込みます。 ### **例** [JSample18_8.java] ``` package JFile; import java.util.Scanner; public class JSample18_8 { public static void main(String[] args) { System.out.println("キーボードから入力してください"); Scanner scan = new Scanner(System.in); int num = scan.nextInt(); System.out.println("入力された文字は「" + num + "」です"); } } ``` #### **実行結果** キーボードから入力してください<br> 12345<改行><br> 入力された文字は「12345」です <br> *** > **練習** >> **問題1**[JEx18_1.java] 1!+2!+3!+…+n! を計算するプログラムをつくれ。ただし、n は キーボードで与えるものとする。 >> **問題2**[JEx18_2.java] 下記の文章に単語"Thanks"をカウントします。 <pre> <iframe src="javascript:'<html> Thanks a million.<br> Thanks a bunch.<br> Thank you ever so much. </html>'"></iframe> </pre>
content
戻る