상세 컨텐츠

본문 제목

FileRead 클래스 read(char cbuf, offset, length) 예제

Java

by kwanghyup 2020. 6. 14. 13:42

본문

이 클래스와 같은 경로에 test.txt 파일 생성

가나다라마바사아자차카타파하abcdefghijklmnopqrstuvwxyz

FileReaderTest 클래스 

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[2]; // 한번에 문자 배열의 크기 만큼 읽을 수 있음
        int readed =reader.read(cbuf); // 문자배열에 읽은 문자를 저장하고 읽은 문자 수 반환
        System.out.println("읽은 문자 수 "+readed);
        System.out.println(cbuf);

        reader.close();
    }
}

 

while문 사용 

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[2];
        int readed;

        while((readed=reader.read(cbuf))!=-1){
            System.out.println("읽은 문자수: "+readed +" ,읽은 문자: " + new String(cbuf));
        }
        reader.close();
    }
}

 

 

읽은 문자열 String 인스턴스에 누적하여 저장 

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[2];
        String data = ""; // 여기에 읽은 문자를 누적

        while((reader.read(cbuf))!=-1){
            data += new String(cbuf); // 문자배열을 형변환하여 스트링 인스턴스에 누적
        }
        System.out.println(data);

        reader.close();
    }
}

 

스트링 버퍼 사용

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[2];
        StringBuffer sb = new StringBuffer(); // 스트링버퍼 생성

        while((reader.read(cbuf))!=-1){
            sb.append(cbuf);    // 스트링 버퍼에 문자배열 누적
        }
        System.out.println(sb); // 결과확인
        
        reader.close();
    }
}

 

문자배열의 크기를 조절하여 한번에 읽기 

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[100]; // 배열 크기 조절
        reader.read(cbuf);
        System.out.println(cbuf); // 결과 확인

        reader.close();
    }
}

 

read(cahr[] cbuf, int offset, int length)

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Arrays;

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        String path = FileReaderTest.class.getResource("test.txt").getPath();
        Reader reader = new FileReader(path);

        char[] cbuf = new char[100];
        Arrays.fill(cbuf,0,3,'#');// {#,#,#, ... }
//        System.out.println(Arrays.toString(cbuf)); // 배열 상태 확인
        reader.read(cbuf,3,5); // cbuf배열의 cbuf[3]의 위치부터 읽은 문자 5개 저장
        System.out.println(Arrays.toString(cbuf)); // 배열 상태 확인
        reader.close();
        /*
            reader.read(cbuf)는 다음과 동일하다.
            reader.read(cbuf,0,cbuf.length)
        */
    }
}

'Java' 카테고리의 다른 글

Systme.in 예제  (0) 2020.06.14
FileInputStream 클래스 read() 예제  (0) 2020.06.14
FileOutStream write()메소드 예제  (0) 2020.06.14
FileWriter 클래스 write() 메소드 예제  (0) 2020.06.14
FileInputStream read() 메소드 예제  (0) 2020.06.14

관련글 더보기

댓글 영역