파일출력 3

바이트 기반 스트림 - 파일이나 배열의 내용을 읽어 들여 출력

파일이나 배열의 내용을 읽어 들여 출력하는 클래스 작성 파일이나 배열의 내용을 읽어 들여 출력하는 클래스를 작성한다. 프로그램을 실행할 때 인자로 'file'을 지정하면 이전에 작성했던 file.dat의 내용을 읽어 들여 화면에 출력하고, 인자를 array로 지정하면 알파벳 소문자가 저장되어 있는 배열의 내용을 읽어 들여 화면에 출력하는 프로그램이다. import java.io.*; public class FileArrayInputStreamTest { public static void print(InputStream in){ byte[] buffer = new byte[512]; int readcount = 0; try { while((readcount = in.read(buffer)) != -1){ ..

바이트 기반 스트림 - 파일을 읽어 출력(개선)

파일을 읽어 출력하는 프로그램의 개선 앞에 했던 예제는 효율이 떨어지는 문제가 있다. 효율이 떨어지는 이유는 운영체제에 있다. 우리가 사용하는 운영체제는 하드웨어를 제어하는 기능이 있다. 자바에서 파일을 읽어 들이라고 명령을 내리면, 내부적으로는 운영체제에게 부탁해서 물리적 장치인 하드디스크로부터 읽어오게 된다. 그런데 이 읽어오는 부분에서 몇가지 중요한 점을 고려해야 한다. 자바 프로그래밍으로 1바이트를 읽어오라고 시리행하면, 운영체제는 실제로 1바이트를 읽지 않고 보통 인접한 256바이트나 512바이트를 읽게 된다. 이는 1000바이트의 파일을 1바이트씩 읽어오라고 실행하면, 내부적으로는 512바이트씩 1000번 읽어온다. 이런 문제를 해결하려면 1바이트씩 읽어 들이는 것이 아니라, 운영체제가 실제로..

바이트 기반 스트림 - 파일의 내용을 읽어 들여 화면에 출력

파일의 내용을 읽어 들여 화면에 출력하는 프로그램 import java.io.*; public class FileView { public static void main(String[] args) { if(args.length != 1){ System.out.println("사용법 : java FileView 파일이름"); System.exit(0); } // if end FileInputStream fis = null; try{ fis = new FileInputStream(args[0]); int i = 0; while((i = fis.read()) != -1){ System.out.write(i); } }catch(Exception ex){ System.out.println(ex); }finally{..