以下ã¯ã€Javaã§ä¸Šè¨˜ã®è¦ä»¶ã‚’満ãŸã™ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ãƒ—ãƒã‚°ãƒ©ãƒ ã®ç°¡å˜ãªä¾‹ã§ã™ã€‚ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã€BufferedReaderを使用ã—ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸãƒ•ァイルã®å†…容をèªã¿å–りã€ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«ã¯FileNotFoundExceptionã‚’ã‚ャッãƒã—ã¦ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã€‚
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class FileReadExample {
public static void main(String[] args) {
// ユーザーã«ãƒ•ァイルパスを入力ã—ã¦ã‚‚らã†
Scanner scanner = new Scanner(System.in);
System.out.print("ファイルã®ãƒ‘スを入力ã—ã¦ãã ã•ã„: ");
String filePath = scanner.nextLine();
// BufferedReaderを使用ã—ã¦ãƒ•ァイルをèªã¿å–り
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
// ファイルã®å†…容をコンソールã«è¡¨ç¤º
System.out.println(line);
}
} catch (FileNotFoundException e) {
// ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
System.out.println("ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。エラー: " + e.getMessage());
} catch (IOException e) {
// ãã®ä»–ã®å…¥å‡ºåЛ例外ãŒç™ºç”Ÿã—ãŸå ´åˆã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
System.out.println("ファイルã®èªã¿å–りä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚エラー: " + e.getMessage());
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€try-with-resources文を使用ã—ã¦BufferedReaderを効果的ã«ã‚¯ãƒãƒ¼ã‚ºã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ•ァイルã®èªã¿å–りãŒå®Œäº†ã—ãŸã‚‰BufferedReaderãŒè‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚ã¾ãŸã€FileNotFoundExceptionã¨IOExceptionã‚’ã‚ャッãƒã—ã¦é©åˆ‡ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã„ã¾ã™ã€‚
try-with-resourcesæ–‡
try-with-resourcesæ–‡ã¯ã€Java 7ã‹ã‚‰å°Žå…¥ã•ã‚ŒãŸæ©Ÿèƒ½ã§ã€ãƒªã‚½ãƒ¼ã‚¹ã‚’明示的ã«ã‚¯ãƒãƒ¼ã‚ºã™ã‚‹ãŸã‚ã®æ§‹æ–‡ã§ã™ã€‚主ã«ã€ãƒ•ァイルやãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šãªã©ã€ã‚¯ãƒãƒ¼ã‚ºãŒå¿…è¦ãªãƒªã‚½ãƒ¼ã‚¹ã‚’使用ã™ã‚‹å ´åˆã«å½¹ç«‹ã¡ã¾ã™ã€‚try-with-resourcesを使用ã™ã‚‹ã¨ã€ãƒªã‚½ãƒ¼ã‚¹ã‚’確実ã«ã‚¯ãƒãƒ¼ã‚ºã™ã‚‹ãŸã‚ã®å†—é•·ãªã‚³ãƒ¼ãƒ‰ã‚’減らã™ã“ã¨ãŒã§ãã¾ã™ã€‚
try-with-resourcesæ–‡ã¯ä»¥ä¸‹ã®æ§‹æ–‡ã‚’æŒã£ã¦ã„ã¾ã™:
try (リソースã®åˆæœŸåŒ–) {
// リソースを使用ã™ã‚‹ã‚³ãƒ¼ãƒ‰
} catch (例外ã®åž‹1 変数1) {
// 例外1ã®å‡¦ç†
} catch (例外ã®åž‹2 変数2) {
// 例外2ã®å‡¦ç†
} finally {
// クãƒãƒ¼ã‚ºå‡¦ç†ã‚„ãã®ä»–ã®çµ‚了処ç†ï¼ˆå¿…è¦ãªå ´åˆï¼‰
}
ã“ã®æ§‹æ–‡ã§ã¯ã€tryã®ãƒ–ãƒãƒƒã‚¯å†…ã§åˆæœŸåŒ–ã•れãŸãƒªã‚½ãƒ¼ã‚¹ã¯ã€tryブãƒãƒƒã‚¯ã‚’抜ã‘ã‚‹éš›ã«è‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚リソースã¨ã¯ã€AutoCloseableã¾ãŸã¯Closeableインターフェースを実装ã—ãŸã‚ªãƒ–ジェクトã®ã“ã¨ã§ã™ã€‚BufferedReaderã‚„FileReaderãªã©ã€ãƒ•ァイルやストリームを扱ã†ã‚¯ãƒ©ã‚¹ã¯ã“れらã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを実装ã—ã¦ãŠã‚Šã€try-with-resourcesを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
以下ã¯ã€try-with-resourcesを使用ã—ã¦ãƒ•ァイルã®èªã¿å–りを行ã†ä¾‹ã§ã™ï¼š
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
// try-with-resources文を使用ã—ã¦BufferedReaderã‚’åˆæœŸåŒ–
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
// ファイルã®å†…容を表示
System.out.println(line);
}
} catch (IOException e) {
// 例外ã®å‡¦ç†
e.printStackTrace();
}
}
}
ã“ã®ä¾‹ã§ã¯ã€BufferedReaderãŒtryã®ãƒ–ãƒãƒƒã‚¯å†…ã§åˆæœŸåŒ–ã•れã¦ã„ã¾ã™ã€‚tryブãƒãƒƒã‚¯ã‚’抜ã‘ã‚‹éš›ã«ã€BufferedReaderã¯è‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚ã¾ãŸã€IOExceptionãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯catchブãƒãƒƒã‚¯ã§é©åˆ‡ãªå‡¦ç†ãŒè¡Œã‚れã¾ã™ã€‚
try-with-resourcesæ–‡ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã‚’効果的ã«è¡Œã†ãŸã‚ã®å¼·åŠ›ãªæ©Ÿèƒ½ã§ã‚りã€ãƒªã‚½ãƒ¼ã‚¹ã®ç¢ºå®Ÿãªã‚¯ãƒãƒ¼ã‚ºã‚’容易ã«å®Ÿç¾ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ¼ãƒ‰ãŒã‚·ãƒ³ãƒ—ルã§èªã¿ã‚„ã™ããªã‚Šã€ãƒªã‚½ãƒ¼ã‚¹ãƒªãƒ¼ã‚¯ã‚’防ãã“ã¨ãŒã§ãã¾ã™ã€‚リソースã®é–‹æ”¾æ¼ã‚Œã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®å®‰å®šæ€§ã«å½±éŸ¿ã‚’与ãˆã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ãŒã€try-with-resourcesを使用ã™ã‚‹ã“ã¨ã§ã€é–‹ç™ºè€…ã¯æ‰‹å‹•ã§ã®ã‚¯ãƒãƒ¼ã‚ºå‡¦ç†ã‚’æ›¸ãæ‰‹é–“ã‚’çœãã¤ã¤ã€ç¢ºå®Ÿãªãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã‚’実ç¾ã§ãã¾ã™ã€‚
ã“ã®æ©Ÿèƒ½ã‚’ä¸Šæ‰‹ã«æ´»ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¼ãƒ‰ã®ä¿å®ˆæ€§ã‚’å‘上ã•ã›ã€ã‚¯ãƒªãƒ¼ãƒ³ã§ã‚¨ãƒ¬ã‚¬ãƒ³ãƒˆãªJavaプãƒã‚°ãƒ©ãƒ を構築ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
BufferedReader
BufferedReader ã¯ã€Javaã®å…¥åŠ›ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‹ã‚‰ãƒ†ã‚ストをéžå¸¸ã«åŠ¹çŽ‡çš„ã«èªã¿è¾¼ã‚€ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã§ã™ã€‚通常ã€FileReaderã‚„InputStreamReaderãªã©ã®ä»–ã®ãƒªãƒ¼ãƒ€ãƒ¼ã‚¯ãƒ©ã‚¹ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã•れã¾ã™ã€‚
主ãªç‰¹å¾´ã‚„利点ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š
- ãƒãƒƒãƒ•ァリング(Buffering):
BufferedReaderã¯å†…部ã§ãƒ‡ãƒ¼ã‚¿ã‚’ãƒãƒƒãƒ•ァリングã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ•ァイルやãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿è¾¼ã‚€éš›ã«ã€1ãƒã‚¤ãƒˆãšã¤ã§ã¯ãªãã¾ã¨ã‚ã¦èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã€èªã¿è¾¼ã¿ã®åŠ¹çŽ‡ãŒå‘上ã—ã¾ã™ã€‚ - 行å˜ä½ã®èªã¿è¾¼ã¿:
readLine()メソッドを使用ã—ã¦ã€ãƒ†ã‚ストファイルã®å†…容を行å˜ä½ã§èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã¯ã€è¡Œã”ã¨ã«ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã™ã‚‹éš›ã«ä¾¿åˆ©ã§ã™ã€‚ - æ–‡å—セット指定:
FileReaderã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã™ã‚‹å ´åˆã€FileReaderãŒä½¿ç”¨ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ–‡å—セットã§ãƒ†ã‚ストをèªã¿è¾¼ã¿ã¾ã™ã€‚ã¾ãŸã€InputStreamReaderを使用ã—ã¦ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§æ–‡å—セットを指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
以下ã¯ã€BufferedReaderã®åŸºæœ¬çš„ãªä½¿ç”¨ä¾‹ã§ã™ï¼š
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ã“ã®ä¾‹ã§ã¯ã€BufferedReaderを使用ã—ã¦ãƒ•ァイル “example.txt” を行å˜ä½ã§èªã¿è¾¼ã¿ã€å„行をコンソールã«è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚ BufferedReaderã¯try-with-resourcesã§ä½¿ç”¨ã•れã€ãƒªã‚½ãƒ¼ã‚¹ãŒè‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚
BufferedReader ã¯ã€Javaã«ãŠã„ã¦åŠ¹çŽ‡çš„ãªãƒ†ã‚スト入力をå¯èƒ½ã«ã™ã‚‹é‡è¦ãªã‚¯ãƒ©ã‚¹ã®ä¸€ã¤ã§ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ãƒ•ァイルや他ã®å…¥åŠ›ã‚½ãƒ¼ã‚¹ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’éžå¸¸ã«åŠ¹çŽ‡çš„ã«èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®éš›ã€å†…部ã§ã®ãƒ‡ãƒ¼ã‚¿ã®ãƒãƒƒãƒ•ァリングや行å˜ä½ã§ã®èªã¿è¾¼ã¿ãªã©ã€ã•ã¾ã–ã¾ãªæ©Ÿèƒ½ãŒæä¾›ã•れã¦ã„ã¾ã™ã€‚
ã¾ãŸã€try-with-resourcesを活用ã™ã‚‹ã“ã¨ã§ã€ãƒªã‚½ãƒ¼ã‚¹ã®é©åˆ‡ãªã‚¯ãƒãƒ¼ã‚ºå‡¦ç†ã‚’自動的ã«è¡Œã†ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒªã‚½ãƒ¼ã‚¹ãƒªãƒ¼ã‚¯ã‚„クãƒãƒ¼ã‚ºã—忘れã¨ã„ã£ãŸå•題ã‹ã‚‰è§£æ”¾ã•れã¾ã™ã€‚
BufferedReaderã®åˆ©ç”¨ã¯ã€ãƒ†ã‚ストファイルã®èªã¿è¾¼ã¿ã‚„処ç†ã€ãƒã‚°ã®è§£æžãªã©ã€å¤šãã®ã‚·ãƒŠãƒªã‚ªã§å½¹ç«‹ã¡ã¾ã™ã€‚æ£ç¢ºã§ç¢ºå®Ÿãªå…¥åЛ処ç†ãŒæ±‚ã‚ã‚‰ã‚Œã‚‹å ´é¢ã§ã€BufferedReaderã¯é ¼ã‚Šã«ãªã‚‹å˜åœ¨ã§ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント