ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • InputStreamReader& BufferedReader을 통한 입력받기
    JAVA/IOStream 2020. 10. 5. 17:56

    System.in : 키보드 standard inputStream

    new InputStreamReader(System.in) : 입력을 받아 문자 인코딩을 실행

    new BufferedReader() : 입력받은 문자를 버퍼에 저장하는 역할과 저장소 역할을 한다.

     

     

    아래는 System.in.read함수를 이용해서 한 글자를 읽어오는 내용이다.

    프로그램 실행결과

    소스 파일

    KeyInput.java
    0.00MB

     

    아래의 내용 또한, System.in.read함수를 이용해서 한 글자를 읽어오는 내용이다.

    프로그램 실행결과

    소스 파일

    KeyInput.java
    0.00MB

     

    아래에서도 System.in.read함수를 통해, 입력을 받는 내용이다.

    그런데, 실행결과를 통해 입력받은 문자열은 6자인데, 8인 것을 알 수 있다.

    나중에 이런 부분에 대해서도 생각을 해줘야 한다.

    new String(byte 배열,시작,끝-2) ; //\n, \r이 붙어있어서 빼야 한다.

    프로그램 실행결과

     

    키보드로 입력한 데이터 받기

    - System.in.read()를 이용

    - 문자를 여러 번 받아 문자열로 만든다.

    - new String(byte 배열,시작,끝-2); // \n, \r이 붙어있어서 이를 빼야 한다.

    프로그램 실행결과

    소스 파일

    ReadFromSystem1.java
    0.00MB

     

     

     

    아래의 내용은 InputStreamReader을 이용해서 입력을 받는 내용이다.

    프로그램 실행결과

    소스 파일

    InputStreamReaderTest.java
    0.00MB

     

     

    아래는 BufferedReader를 이용한 입력을 받는다.

    - 키보드 또는 파일에서 한줄 단위로 입력을 받는다.
    - readLIne()를 이용.

    프로그램 실행결과

    소스 파일

    InputStreamReaderTest.java
    0.00MB

    그리고, InputStreamReader& BufferedReader를 통해서 폴더 명을 입력 받아

    폴더의 여러 가지 정보를 출력해보자.

    먼저, 아래와 같이 src폴더의 하위에 AAA폴더를 하나 생성하자.

     

    프로그램 실행결과

    소스 파일

    FileInfo.java
    0.00MB

     

    아래의 내용은 파일의 내용을 가지고 와서 출력하는 내용이다.

     

    프로그램 실행결과

     

    소스 파일

    ReadFile.java
    0.00MB

     

    이번에 구현할 내용은 한 폴더 내에 존재하는 폴더 혹은 파일 명을 모두 출력하는 것을 구현해보자. 

    아래와 같이 프로젝트 내에 AAA폴더를 만들자.

    AAA폴더 내에 BBB와 CCC폴더를 만들어 놓는다. 

     

    아래는 프로그램 소스이다.

    프로그램 실행결과

    소스 파일

    Exer.java
    0.00MB

     

    복습의 개념으로 다시 보도록 하자.

    이번에 다시 아래와 같이 진행해보자.

    키보드로부터 입력받는 부분을 다시 만들어보자.

    프로그램 실행결과

    키보드로부터 파일 명을 입력받아 파일에 있는 내용을 가지고 오는 내용을 보자.

    우선, c.txt파일을 만들고 다음과 같이 내용을 쓰자.

    아래는 위의 c.txt파일을 내용을 읽어오는 내용이 아래의 소스이다.

    프로그램 실행결과

    현재의 c.txt파일의 내용은 다음과 같다.

    소스 파일

     

    파일에 쓸 내용을 c.txt파일의 마지막에 이어서 쓰도록 하자.

    c.txt파일의 내용을 보자.

    위에서는 지정한 문자열을 파일에 썼는데, 이번에는 파일에 쓸 내용을 직접 입력받아서

    c.txt파일에 쓰도록 해보자.

    프로그램 실행결과로 내가 입력한 문자열이다.

    아래는 c.txt파일이다.

    위에서는 파일에 쓸 내용을 한 줄씩만 읽어서 저장했는데, 이번에는 여러 줄을 입력받아 파일에 저장해보자.

    그리고 파일에  쓸 내용을 종료하고 싶으면 "/e"를 입력하면 끝내도록 하자.

    c.txt파일에 있는 내용을 모두 지우도록 하자.

    프로그램 실행결과

    아래는 c.txt파일에 저장된 내용이다.

    소스 파일

    PrintWriteTest.java
    0.00MB

     

     

    File 객체 및 Stream객체 사용
       - 파일, 디렉토리에 대한 정보를 제공하는 클래스
       - 키보드에서 파일명 입력받기

    프로그램 실행결과

    src 디렉토리를 보자.

    소스 파일

    FileDirDemo1.java
    0.00MB

     

     

     

     

    파일의 정보 출력

    abc.txt 파일 내용

     

    프로그램 실행결과1

    프로그램 실행결과2

     

    소스 코드

    import java.io.*;
    
    public class FileInfo 
    {
        public static void main (String args[]) 
        {
            System.out.print("파일 이름 : ");
        
            String name = "";
        
            try 
            {
                BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                //	메모리 저장 기능(입력 기능(키보드 장치를 지정함)) 
                name = in.readLine();//한 라인을 읽어 들임      
            }
            catch (Exception e) 
            {
                System.out.println("Error: " + e.toString());
            }
    
            //	file 클래스 객체 생성
            File file = new File(name);
            
            if (file.exists()) 
            {
                System.out.println("파일 이름 : " + file.getName());
                System.out.println("상대 패스 : " + file.getPath());
                System.out.println("절대 패스 : " + file.getAbsolutePath());
                System.out.println("쓰기 가능 : " + file.canWrite());
                System.out.println("읽기 가능 : " + file.canRead());
                System.out.println("파일 길이 : " + file.length() + " 바이트");
            }
            else
                System.out.println("해당 파일은 존재하지 않습니다.");
        }
    } 

     

    댓글

Designed by Tistory.