자바는 모든 파일을 가지고 실행을 하면 느리기 때문에 유틸리티() 영역에 따로 넣어 놓고 불러서 사용을 한다. 값을 가져올 때는 처음 영역에 import를 한다.
<숫자형 파일 읽기>
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class MainFile {
public static void main(String[] args) {
File file = new File("input.txt");
try {
Scanner sc = new Scanner(file);
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*100);
}
} catch(FileNotFoundException e) {
System.out.println("파일에 문제가 발생했습니다.");
}
}
}
File file = new File("input.txt");
input.txt 라는 파일을 읽어주는 객체이다. 객체니까 new 연산자로 생성을 한다.
try { 예외가 발생할 수 있는 문장 } catch(예외이름A 객체명A ) { A오류 발생 시 실행할 문장 } |
예외처리
문제가 일어나지 않을 경우에는 try 부분을 실행한다. 그러나 선언을 해 둔 코드에서 예외(오류)가 발생 했을 때는 아래의 문장을 실행한다. 이러한 명령이 없을 경우 오류가 났을 때 아무것도 실행이 되지 않는데 이렇게 명령을 해두면 오류가 났을 때 문자를 띄운다던지 다른 처리를 할 수 있다.
Scanner sc = new Scanner(file);
위에서 지정한 파일을 읽어 오는 기능을 쓰고 있다.
while(sc.hasNextInt()){
'객체.hasNextInt()' 읽어 올 자료가 있다면 중괄호 안을 실행하라. 여기서 hasNextInt를 보면 정수형(숫자) 파일이라는 걸 알 수 있다. 여기서 while문을 사용하는 이유는 끝까지 출력할 때까지 무한루프를 타기 때문이다.
System.out.println(sc.nextInt()*100);
가져 올 자료가 있다면 가져온 값에다가 곱하기 100을 해라. sc.nextInt에서 Int가 숫자형이기 때문에 100을 곱할 수 있는 것이다.
catch(FileNotFoundException e) {
catch는 문제가 발생했을 시 무조건 실행되는 문장 부분이다.
여기서 FileNotFoundException e 이 부분은 파일을 찾을 수 없는 예외를 말하는 상황!
구조 자체가 다르지만 데이터베이스 할 때도 나오니 기억해두자
System.out.println("파일에 문제가 발생했습니다.");
hasNext()
현재 위치에 다음 데이터가 있는지 여부를 묻는다. 결과를 true, false로 갖고 온다.
Next()
데이터를 갖고 오는 역할을 하고, 결과로 다음데이터를 갖고 온다.
.txt 파일 만드는 방법① - 왼쪽의 Package Explorer
①New - File
File file = new File("input.txt");
②부른대로 파일명과 확장자 설정을 해야한다.
while(sc.hasNextInt()) {
③숫자형 파일을 불러오는 거라서 숫자만 써야한다.
System.out.println(sc.nextInt()*100);
④ 곱하기 100을 해서 출력
}
<문자열>
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class MainFile2 {
public static void main(String[] args) {
File file = new File("input2.txt");
try {
Scanner sc = new Scanner(file);
while(sc.hasNext()) {
System.out.println(sc.next());
}
} catch(FileNotFoundException e) {
System.out.println("파일에 문제가 발생했습니다.");
}
}
}
이부분
while(sc.hasNext()) {
System.out.println(sc.next());
}
위와 같은 문장이지만 문자열을 받기 때문에 Int가 빠졌다.
.txt 파일 만드는 방법② - 메모장
txt파일이니까 메모장으로 만들어도 된다.
①
초록선 - 문자열을 불러왔으니까 문자열을 값을 써주면 된다. 영어 한글 모두 가능하고 숫자를 입력해도 문자열로 인식한다.
빨간선 - input2.txt로 설정했기 때문에 제목과 확장자가 같아야 한다.
② 그대로 출력
try {
Scanner sc = new Scanner(file);
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*100);
}
스캐너로 입력 받은 값을 close해주지 않아서 오류가 났던 상황이었는데 try-catch문에서는 아래처럼 try() 괄호 안에 리소스를 넣어줘야 오류가 나지 않는다. 반납하는 코드 없이 사용이 가능!
try(Scanner sc = new Scanner(file)) {
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*100);
}
이렇게 바뀌었다!!
'개발일지 > Java + Spring' 카테고리의 다른 글
JVM이란? JVM의 구성요소 (0) | 2021.09.20 |
---|---|
[Java] 함수 설명 + 만드는 방법 (1) | 2021.09.17 |
[java] 배열의 설명과 예제 (0) | 2021.09.17 |
[java] float, double 계산 후 소수점까지 출력 (0) | 2021.09.17 |
[java] 0916 정리 및 예제 (0) | 2021.09.16 |