sub_title
 개발자마당
제   목 (JAVA) 자바 스캐너(Scanner)로 파일 내용 읽어오기
작성자 고구마 등록일 2017-04-28 08:06:33 조회수 4,254
http://blog.naver.com/p952973/220914857521

스캐너는 표준 입력(Stdin, 키보드)을 받을 수 있도록 돕는 메소드이다. String을 비롯한 primitive 타입들로 변환해 받을 수 있도록 메소드들을 제공하고 있다. 주요 메소드와 특징 간단하게 정리하자면

next()
문자열 반환함수. 공백(space)를 만나면 종료된다.
nextLine()
문자열 반환함수. 개행(Enter)를 만나면 종료된다. next()와 달리 띄어쓰기를 할 수 있다.
nextInt()
 int 타입 반환함수. 
nextDouble()
double 타입 반환 함수.


package com.naver.cafe.club.biz; import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String temp = ""; while(true){ System.out.println("하고싶은 말을 입력하세요. 종료하고 싶으면 quit 입력하세요"); temp = sc.nextLine(); if(temp.equals("quit")){ System.out.println("프로그램을 종료합니다."); sc.close(); break; } else { System.out.println("하고싶은 말은 : "+ temp + " 입니다."); } } } }

temp.equals 메소드는 문자열 값 비교 메소드이다. c언어의 경우 == 를 통해 값 비교가 되지만 자바에서는 객체 주소를 비교하기 때문에 값 비교를 할 수 없다. 이해가 안된다면 자바에서 문자열 비교하는 방법으로 받아들이도록 하자.

연녹색이 키보드 입력값이고, 결과가 잘 나온다. 예제 코드는 값들을 문자열로 받기 때문에 숫자를 입력받아도 int형이 아니라 String형의 데이터로 받아진다. 123을 가지고 연산을 하고 싶어도 할 수가 없다는 말이다. 빨간 박스 안의 123을 보자. 이 값은 123으로 얼핏 보기에는 숫자가 왔다. 이 값을 + 기호를 써서 더할 수 있을까? String 타입이기 때문에 그렇지 않다. 계산을 하고자 하는 의도를 가지고 코드를 작성한다면 nextInt 메소드를 사용해 값을 입력받아야 한다는 말이다. 다음 예제를 보자

package com.naver.cafe.club.biz; import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = 0; int num2 = 0; System.out.println("덧셈을 시작합니다!"); System.out.println("첫번째 숫자를 입력하세요"); num1 = sc.nextInt(); System.out.println("두번째 숫자를 입력하세요"); num2 = sc.nextInt(); System.out.println(num1 + " + " + num2 + " = " + (num1 + num2) + " 입니다. "); } }

수행 결과는 다음과 같다. 의도하는 결과를 가져온 것이다. String 변수의 경우 + 연산이 이어붙이는 것을 의미하기 때문에 10 + 50의 결과가 1050이 나온다. 래퍼 클래스 포스팅에도 이와 관련된 내용을 포스팅했다. 좀더 생각해보고 싶다면 다음 포스팅 참조



알고리즘 문제 풀기 위해 텍스트 파일을 input으로 입력받으려고 했다. 지금껏 c로 풀었는데 교육을 받으면서 자바를 손에 익게 하고 싶었다.

c에서는 표준입력을 바꿔주는 freopen 함수를 사용했던 것 같은데 자바에서는 스캐너(Scanner) 객체를 이용한다. 내가 파악한 방법은 두가지다.

1. Scanner sc = new Scanner(WhitePrincess.class.getResourceAsStream("sample.txt")); // 현재 폴더에서 파일 검색 2. Scanner sc = new Scanner(new FileInputStream("C:/Users/206-001/workspace/0118/src/sample.txt")); // 절대경로로 파일 검색

1. 클래스에서 제공하는 gerResourceAsStream 메소드를 이용하는 것. 현재 폴더부터 파일 탐색하므로 파일명만 알면 사용 가능
WhitePrincess는 클래스명.

2. FileInputStream 객체를 이용하는 방법. 파일의 절대 경로를 알아야 사용 가능함.


sample.txt가 자바 파일과 같은 경로에 존재하고 있어야 한다.
이 과정은 생략.

 


 
0
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
31  자바(Java) 외부 프로젝트 공유(Share) 하기 이미지   member 고구마 0 / 0 1821 2017-04-29
30  SQL Injection 이미지   member 고구마 0 / 0 20986 2017-04-29
29  (JAVA) 자바 리터럴(Literal) 의미와 용도 이미지   member 고구마 0 / 0 2645 2017-04-28
28  (JAVA) 자바 상수 (final) 사용이유와 방법 이미지   member 고구마 0 / 0 2008 2017-04-28
27  (JAVA) 자바 스캐너(Scanner)로 파일 내용 읽어오기 이미지   member 고구마 0 / 0 4254 2017-04-28
26  리눅스 환경에 설치된 톰캣 재시작하기 이미지   member 높이뜬새 2 / 1 12519 2015-10-27
25  다음과 같은 에러가 발생할때 write failed: No space left on device (28) in Unknown on lin..   member 높이뜬새 1 / 1 4350 2015-07-09
24  sendmail 시작 재시작 종료하기   member 높이뜬새 0 / 0 4688 2015-06-29
23  find 명령어로 찾을 문자열이 들어간 파일찾기   member 컴퓨터존 3 / 0 19855 2010-03-04
22  아파치 재시작 없이 로그 삭제하기   member 컴퓨터존 0 / 0 18454 2010-03-04
21  IIS에서 FLV파일 MIME 타입 등록하기 이미지   admin 웹마당넷 1 / 0 12072 2009-11-27
20  동영상 트래픽 계산하기   member 컴퓨터존 0 / 0 10934 2009-11-18
19  리눅스계정 생성과 삭제 이미지   member 높이뜬새 0 / 0 8578 2009-08-26
18  리눅스에서 tar를 이용한 계정백업하기 이미지   member 높이뜬새 0 / 0 6100 2009-08-22
17  php파일로 실행될 확장자 추가하기   member 컴퓨터존 1 / 0 16614 2009-03-18
16  다음과 같은 에러가 발생할때 Could not reliably determine the server's fully qualified do..   member 높이뜬새 6 / 1 68557 2009-03-17
15  웹프로그래밍 언어별 리퍼러(referer) 구하기   admin 웹마당넷 2 / 0 44598 2009-03-05
14  방금 알게된 새로운 사실!! 윈도우 또는 alert 경고창 내용 복사   member 사라마음 2 / 0 6347 2009-02-15
13  특정 포트(PORT)가 열려있는지 확인하는 방법   member 컴퓨터존 1 / 1 104422 2009-01-22
12  URL이란?   admin 웹마당넷 1 / 0 10816 2009-01-14
11  명령어 프롬프트 창에서 IIS 시작,중지,리스타트하기   member 컴퓨터존 1 / 2 25552 2008-12-11
10  아파치(apache) 시작,중지,리스타트하기   member 컴퓨터존 4 / 3 104384 2008-12-08
9  Windows 미디어 서비스 HTTP 서버제어 프로토콜 활성화 이미지   admin 웹마당넷 0 / 0 5739 2008-09-27
8  리눅스(Linux) 쉘 상태에서 웹서버 접속자 수 알아내기   member 컴퓨터존 0 / 0 3198 2008-09-04
7  [서버운영] 웹 해킹 흔적을 찾는 간단한 find 명령어   member 파도 0 / 1 4118 2008-07-02
write
button [1] [3] button