비디오: 자바 프로그래밍: 텍스트 파일 입출력 2024
많은 Java 프로그램이 컴퓨터의 키보드에서 문자를 읽습니다. 이 프로그램은 스캐너, 시스템과 같은 것을 사용합니다. in 및 nextDouble - Java API에서 정의 된 것들. 이 목록의 DoPayroll 프로그램은이 이야기에 새로운 장을 열었습니다. 프로그램은 키보드에서 문자를 읽는 대신 EmployeeInfo에서 문자를 읽습니다. txt 파일. 파일은 컴퓨터의 하드 드라이브에 있습니다.
import java. util. 스캐너; import java. io. 파일; import java. io. IOException; 공용 클래스 DoPayroll {public static void main (String args []) IOException {Scanner diskScanner = new Scanner (새 파일 ("EmployeeInfo. txt")); for (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. 정적 void payOneEmployee (스캐너 aScanner) {직원 anEmployee = 새로운 직원 (); an Employee. setName (aScanner. nextLine ()); an Employee. setJobTitle (aScanner. nextLine ()); an Employee. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
파일에서 문자를 읽으려면 키보드에서 문자를 읽는 데 도움이되는 것과 동일한 것을 사용합니다. Scanner, nextDouble 및 기타 기능을 사용합니다. 그러나 이러한 장점 이외에도 몇 가지 장애물이 있습니다. 다음은 목록입니다.
->-
새 파일 개체가 필요합니다. 더 정확히 말하면 API 클래스의 새로운 인스턴스가 필요합니다.
new File ("EmployeeInfo.txt")와 같은 코드로이 새 인스턴스를 얻습니다.
따옴표로 묶인 내용은 컴퓨터의 하드 드라이브에있는 파일의 이름입니다. 파일에 문자가 포함되어 있습니다.
이 시점에서, 용어는 산을 두더지 언덕 밖으로 만든다. 물론 새로운 File object 와 새로운 File instance 가 , 나타나지만 새로운 File ("EmployeeInfo. txt")은 하드 드라이브의 파일 새 파일 ("EmployeeInfo.txt")을 새 Scanner로 밀어 넣은 후
스캐너 diskScanner = 새 스캐너 (새 파일 ("EmployeeInfo. txt"));
새로운 파일 비즈니스에 대해 모두 잊어 버릴 수 있습니다. 코드에서 그 시점부터 DiskScanner는 EmployeeInfo를 나타냅니다. txt 파일 이름을 컴퓨터의 하드 드라이브에 저장하십시오. (diskScanner라는 이름은 하드 드라이브의 파일을 나타냅니다. 앞의 예에서 키보드는 주간 및 주말을 누르는 버튼을 의미합니다.)
목록에 새 File 객체를 생성하는 것은 같은 목록에 나중에 새 Employee 객체를 만드는 것과 같습니다. 유일한 차이점은 Employee 및 Account 클래스가이 책의 예제에 정의되어 있다는 것입니다.File 클래스는 Java API에서 정의됩니다.
새 스캐너로 디스크 파일에 연결할 때 새 파일 부분을 잊지 마십시오. 새 파일없이 새 Scanner ("EmployeeInfo. txt")를 작성하면 컴파일러는 별 문제가 없습니다. (코드를 실행하기 전에 경고 또는 오류 메시지가 표시되지 않습니다.) 그러나 코드를 실행하면 얻을 것으로 예상되는 결과와 같은 것을 얻을 수 없습니다.
-
File 클래스는 전체 이름 - java로 참조해야합니다. io. 파일 . 목록에있는 것과 같은 가져 오기 선언을 사용하여이 작업을 수행 할 수 있습니다. 또는
Scanner diskScanner = new Scanner (new java.io. File ("EmployeeInfo. txt"))와 같은 명령문을 사용하여 코드를 복잡하게 만들 수 있습니다.
-
throws IOException 절이 필요합니다. 프로그램이 EmployeeInfo에 연결할 때 많은 일이 잘못 될 수 있습니다. txt. 하드 드라이브에 EmployeeInfo라는 파일이 없을 수도 있습니다. txt.
-
다른 파일의 경우 EmployeeInfo 파일. txt가 잘못된 디렉토리에있을 수 있습니다. 이러한 종류의 재난을 대비하기 위해 Java 프로그래밍 언어에는 몇 가지 예방 조치가 필요합니다. 이 언어는 디스크 파일이 관련되어있을 때 새로운 Scanner를 호출 할 때 발생할 수있는 위험을 인식합니다.
여러 가지 가능한 방법으로 위험을 인정할 수 있지만 가장 간단한 방법은 throws 절을 사용하는 것입니다. 목록에서 main 메소드의 헤더는 throws IOException 단어로 끝납니다. 이 두 단어를 추가함으로써 자바 컴파일러를 달랠 수 있습니다.
마치 "새로운 스캐너를 부르면 문제가 발생할 수 있습니다. 당신은 저를 생각 나게하지 않아도됩니다. "그리고 확실히, 주 메쏘드에 IOException을 던지면 컴파일러가 불평을하지 않게됩니다. 이 throws 절이 없으면보고되지 않은 예외 오류 메시지가 나타납니다.