2021. 04. 23(금) TIL

16834 단어 TILJavaJava

Java

I/O

InputStream

FileInputStream

  • 직접 파일에서 1byte씩 읽어오는 스트림
  • new FileInputStream("경로/파일명");
  • new FileInputStream(new File("경로/파일명"));

BufferedInputStream

  • 모든 InputStream과 연결해서 사용하는 보조스트림, InputStream의 읽기 속도를 향상시킨다.
  • new BufferedInputStream(다른 InputStream);

OutputStream

FileOutputStream

  • 직접 파일에 1byte씩 출력하는 스트림
  • new FileOutputStream("경로/파일명");
  • new FileOutputStream(new File("경로/파일명"));

BufferedOutputStream

  • 모든 OutputStream과 연결해서 사용하는 보조스트림, OutputStream의 출력 속도를 향상시킨다.
  • new BufferedOutputStream(다른 OutputStream);

PrintStream

  • 시스템의 표준출력 스트림으로 사용되는 스트림, System.out과 System.err 정적변수에 각각 연결되어 있다.
  • print(), println()이 중복정의되어 있다.

Reader

FileReader

  • 직접 파일에서 1글자씩 읽어오는 스트림
  • new FileReader("경로/파일명");
  • new FileReader(new File("경로/파일명"));

BufferedReader

  • 모든 Reader와 연결해서 사용하는 보조스트림, 텍스트를 1줄씩 읽어오는 readLine() 메소드가 있다.
  • new BufferedReader(다른 Reader);

InputStreamReader

  • 브릿지스트림, InputStream과 연결할 수 있는 보조스트림
  • new InputStreamReader(다른 InputStream);

Writer

FileWriter

  • 직접 파일에 1글자씩 읽어오느 스트림
  • new FileWriter("경로/파일명")
  • new FileWriter(new File("경로/파일명"));

PrintWriter

  • 텍스트 출력의 만능 스트림
  • print(), println()이 중복정의되어 있다. 자동으로 줄바꿈문자 추가, auto-flush 기능 체공
  • new PrintWriter("경로/파일명");
  • new PrintWriter(다른 InputStream);
  • new PrintWriter(다른 Writer)

OutputStreamWriter

  • 브릿지스트림, OutputStream과 연결할 수 있는 보조스트림
  • new OutputStreamWriter(다른 OutputStream);
package day3;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

public class ApacheIOApp {
	
	public static void main(String[] args) throws IOException {
		
		File src = new File("src/day3/song.mp4");
		File dest = new File("src/day3/song_copy.mp4");
		
		FileUtils.copyFile(src, dest);
		
		// 인터넷의 자원(텍스트, 사진, 영상) 가져오기
		URL url = new URL("https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/202104/21/newsen/20210421211644612vrek.jpg");
		InputStream in = url.openStream();
		FileOutputStream out = new FileOutputStream("src/day3/photo.jpg");
		
		IOUtils.copy(in, out);
	}
}
package day3;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class BridgeStreamApp {

	public static void main(String[] args) throws IOException {
		
		URL url = new URL("https://sample-videos.com/csv/Sample-Spreadsheet-100-rows.csv");
		// 1byte 씩 읽어오는 스트림 획득
		InputStream is = url.openStream();
		// 1글자씩 읽어오는 스트림과 연결
		InputStreamReader isr = new InputStreamReader(is);
		// 
		BufferedReader reader = new BufferedReader(isr);
		
		String text = null;
		while ((text = reader.readLine()) != null) {
			System.out.println(text);
		}
	}
}
package day3;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;

public class StandardInputApp {

	public static void main(String[] args) throws IOException {
		
		// Scanner와 표준입력스트림을 연결해서 키보드 입력값 읽어오기
//		Scanner scanner = new Scanner(System.in);
//		System.out.println("메세지를 입력하세요");
//		String text = scanner.nextLine();
//		System.out.println("입력 메세지" + text);
//		scanner.close();
		
		// BufferedReader, InputStreamReader와 표준 입력스트림을 연결해서 키보드 입력값 읽어오기
		InputStream is = System.in;							// 키보드와 연결된  InputStream
		InputStreamReader isr = new InputStreamReader(is);	// InputStreamReader와 표준입력스트림 연결
		BufferedReader reader = new BufferedReader(isr);	// 표준입력스트림이 BufferedReader와
		
		// 프로그램 <- BufferedReader <- InputStreamReader <- InputStream <- 키보드
		System.out.print("메세지를 입력하세요 : ");
		String text = reader.readLine();
		System.out.println("입력 메세지 : " + text);
	}
}

좋은 웹페이지 즐겨찾기