java
java.io 패키지에는 Java에서 입출력(I/O)을 수행하는 데 필요한 거의 모든 클래스가 포함되어 있습니다. 이러한 모든 스트림은 입력 소스와 출력 대상을 나타냅니다. java.io 패키지의 스트림은 프리미티브, 객체, 현지화된 문자 등과 같은 많은 데이터를 지원합니다.
스트림은 데이터 시퀀스로 정의할 수 있습니다. 스트림에는 두 가지 종류가 있습니다 -
인풋스트림 − InputStream은 소스에서 데이터를 읽는 데 사용됩니다.
출력스트림 − OutputStream은 대상에 데이터를 쓰는 데 사용됩니다.
Java는 파일 및 네트워크와 관련된 I/O에 대해 강력하지만 유연한 지원을 제공하지만 이 자습서에서는 스트림 및 I/O와 관련된 매우 기본적인 기능을 다룹니다. 가장 일반적으로 사용되는 예를 하나씩 살펴보겠습니다 −
Java 바이트 스트림은 8비트 바이트의 입력 및 출력을 수행하는 데 사용됩니다. 바이트 스트림과 관련된 많은 클래스가 있지만 가장 자주 사용되는 클래스는 FileInputStream 및 FileOutputStream . 다음은 이 두 클래스를 사용하여 입력 파일을 출력 파일로 복사하는 예입니다 -
예
import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("input.txt"); out = new FileOutputStream("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
이제 input.txt 파일을 만들어 보겠습니다. 다음 내용으로 -
This is test for copy file.
다음 단계로 위의 프로그램을 컴파일하고 실행하면 input.txt와 동일한 내용으로 output.txt 파일이 생성됩니다. 따라서 위의 코드를 CopyFile.java 파일에 넣고 다음을 수행합니다. -
$javac CopyFile.java $java CopyFile
자바 바이트 스트림은 8비트 바이트의 입력 및 출력을 수행하는 데 사용되는 반면 Java Character 스트림은 16비트 유니코드에 대한 입력 및 출력을 수행하는 데 사용됩니다. 문자 스트림과 관련된 많은 클래스가 있지만 가장 자주 사용되는 클래스는 FileReader입니다. 및 FileWriter . 내부적으로 FileReader는 FileInputStream을 사용하고 FileWriter는 FileOutputStream을 사용하지만 여기서 주요 차이점은 FileReader는 한 번에 2바이트를 읽고 FileWriter는 한 번에 2바이트를 씁니다.
위의 예를 다시 작성할 수 있습니다. 이 두 클래스를 사용하여 입력 파일(유니코드 문자 포함)을 출력 파일에 복사합니다. −
예
import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
이제 input.txt 파일을 만들어 보겠습니다. 다음 내용으로 -
This is test for copy file.
다음 단계로 위의 프로그램을 컴파일하고 실행하면 input.txt와 동일한 내용으로 output.txt 파일이 생성됩니다. 따라서 위의 코드를 CopyFile.java 파일에 넣고 다음을 수행합니다. -
$javac CopyFile.java $java CopyFile
모든 프로그래밍 언어는 사용자 프로그램이 키보드에서 입력을 받아 컴퓨터 화면에 출력을 생성할 수 있는 표준 I/O를 지원합니다. C 또는 C++를 알고 있는 경우 프로그래밍 언어를 사용하는 경우 세 가지 표준 장치 STDIN, STDOUT 및 STDERR을 알고 있어야 합니다. 마찬가지로 Java는 다음 세 가지 표준 스트림을 제공합니다. -
표준 입력 − 사용자의 프로그램에 데이터를 공급하는 데 사용되며 일반적으로 키보드는 표준 입력 스트림으로 사용되며 System.in으로 표시됩니다. .
표준 출력 − 사용자의 프로그램에 의해 생성된 데이터를 출력하기 위해 사용되며, 일반적으로 컴퓨터 화면은 표준 출력 스트림으로 사용되며 System.out으로 표현됩니다. .
표준 오류 − 사용자의 프로그램에서 발생하는 오류 데이터를 출력하기 위해 사용되며, 일반적으로 표준 오류 스트림은 컴퓨터 화면을 사용하며 System.err로 표시됩니다. .
다음은 InputStreamReader를 생성하는 간단한 프로그램입니다. 사용자가 "q"를 입력할 때까지 표준 입력 스트림을 읽으려면 -
예
라이브 데모import java.io.*; public class ReadConsole { public static void main(String args[]) throws IOException { InputStreamReader cin = null; try { cin = new InputStreamReader(System.in); System.out.println("Enter characters, 'q' to quit."); char c; do { c = (char) cin.read(); System.out.print(c); } while(c != 'q'); }finally { if (cin != null) { cin.close(); } } } }
위의 코드를 ReadConsole.java 파일에 보관하고 다음 프로그램과 같이 컴파일하여 실행해 보자. 이 프로그램은 'q' -
를 누를 때까지 동일한 문자를 계속 읽고 출력합니다.$javac ReadConsole.java $java ReadConsole Enter characters, 'q' to quit. 1 1 e e q q
앞에서 설명한 것처럼 스트림은 데이터 시퀀스로 정의할 수 있습니다. 입력 스트림 소스 및 OutputStream에서 데이터를 읽는 데 사용됩니다. 대상에 데이터를 쓰는 데 사용됩니다.
다음은 입력 및 출력 스트림을 처리하는 클래스 계층입니다.
두 가지 중요한 스트림은 FileInputStream입니다. 및 FileOutputStream , 이 튜토리얼에서 논의될 것입니다.
이 스트림은 파일에서 데이터를 읽는 데 사용됩니다. new 키워드를 사용하여 개체를 만들 수 있습니다. 여러 유형의 생성자를 사용할 수 있습니다.
다음 생성자는 파일 이름을 문자열로 사용하여 파일을 읽을 입력 스트림 개체를 만듭니다. -
InputStream f = new FileInputStream("C:/java/hello");
다음 생성자는 파일 개체를 사용하여 파일을 읽을 입력 스트림 개체를 만듭니다. 먼저 다음과 같이 File() 메서드를 사용하여 파일 객체를 만듭니다. -
File f = new File("C:/java/hello"); InputStream f = new FileInputStream(f);
InputStream이 있으면 객체를 손에 들고 있으면 스트림을 읽거나 스트림에서 다른 작업을 수행하는 데 사용할 수 있는 도우미 메서드 목록이 있습니다.
Sr.No. | 방법 및 설명 |
---|---|
1 | public void close()에서 IOException 발생{} 이 메서드는 파일 출력 스트림을 닫습니다. 파일과 관련된 모든 시스템 리소스를 해제합니다. IOException을 발생시킵니다. |
2 | 보호된 무효 finalize()가 IOException을 던짐{} 이 방법은 파일에 대한 연결을 정리합니다. 이 스트림에 대한 참조가 더 이상 없을 때 이 파일 출력 스트림의 닫기 메소드가 호출되는지 확인합니다. IOException을 발생시킵니다. |
3 | 공개 int read(int r) IOException 발생{} 이 메서드는 InputStream에서 데이터의 지정된 바이트를 읽습니다. 정수를 반환합니다. 데이터의 다음 바이트를 반환하고 파일의 끝이면 -1을 반환합니다. |
4 | public int read(byte[] r)에서 IOException 발생{} 이 메서드는 입력 스트림에서 배열로 r.length 바이트를 읽습니다. 읽은 총 바이트 수를 반환합니다. 파일의 끝이면 -1을 반환합니다. |
5 | public int available()에서 IOException 발생{} 이 파일 입력 스트림에서 읽을 수 있는 바이트 수를 제공합니다. 정수를 반환합니다. |
다른 중요한 입력 스트림을 사용할 수 있습니다. 자세한 내용은 다음 링크를 참조하세요. -
ByteArrayInputStream
데이터 입력 스트림
FileOutputStream은 파일을 만들고 데이터를 쓰는 데 사용됩니다. 스트림은 파일이 없는 경우 출력을 위해 열기 전에 파일을 생성합니다.
다음은 FileOutputStream 개체를 만드는 데 사용할 수 있는 두 개의 생성자입니다.
다음 생성자는 파일 이름을 문자열로 사용하여 파일을 쓰기 위한 입력 스트림 개체를 만듭니다. -
OutputStream f = new FileOutputStream("C:/java/hello")
다음 생성자는 파일 개체를 사용하여 파일을 쓰기 위한 출력 스트림 개체를 만듭니다. 먼저 다음과 같이 File() 메서드를 사용하여 파일 객체를 생성합니다. -
File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);
OutputStream이 있으면 객체를 손에 들고 있으면 스트림에 쓰거나 스트림에서 다른 작업을 수행하는 데 사용할 수 있는 도우미 메서드 목록이 있습니다.
Sr.No. | 방법 및 설명 |
---|---|
1 | public void close()에서 IOException 발생{} 이 메서드는 파일 출력 스트림을 닫습니다. 파일과 관련된 모든 시스템 리소스를 해제합니다. IOException을 발생시킵니다. |
2 | 보호된 무효 finalize()가 IOException을 던짐{} 이 방법은 파일에 대한 연결을 정리합니다. 이 스트림에 대한 참조가 더 이상 없을 때 이 파일 출력 스트림의 닫기 메소드가 호출되는지 확인합니다. IOException을 발생시킵니다. |
3 | 공개 무효 쓰기(int w) IOException 발생{} 이 메서드는 지정된 바이트를 출력 스트림에 씁니다. |
4 | 공개 무효 쓰기(바이트[] w) 언급된 바이트 배열의 w.length 바이트를 OutputStream에 씁니다. |
사용할 수 있는 다른 중요한 출력 스트림이 있습니다. 자세한 내용은 다음 링크를 참조하세요. -
바이트배열출력스트림
데이터 출력 스트림
예
다음은 InputStream 및 OutputStream을 보여주는 예입니다 -
import java.io.*; public class fileStreamTest { public static void main(String args[]) { try { byte bWrite [] = {11,21,3,40,5}; OutputStream os = new FileOutputStream("test.txt"); for(int x = 0; x < bWrite.length ; x++) { os.write( bWrite[x] ); // writes the bytes } os.close(); InputStream is = new FileInputStream("test.txt"); int size = is.available(); for(int i = 0; i < size; i++) { System.out.print((char)is.read() + " "); } is.close(); } catch (IOException e) { System.out.print("Exception"); } } }
위의 코드는 test.txt 파일을 생성하고 주어진 숫자를 바이너리 형식으로 작성합니다. stdout 화면의 출력도 마찬가지입니다.
파일 탐색 및 I/O의 기본 사항을 알아보기 위해 거쳐야 하는 몇 가지 다른 수업이 있습니다.
파일 클래스
파일 리더 클래스
FileWriter 클래스
디렉토리는 다른 파일 및 디렉토리 목록을 포함할 수 있는 파일입니다. 파일을 사용합니다. 개체를 사용하여 디렉터리를 만들고 디렉터리에서 사용 가능한 파일을 나열합니다. 자세한 내용은 File 개체에서 호출할 수 있는 모든 메서드 목록과 디렉터리와 관련된 항목을 확인하세요.
두 개의 유용한 파일이 있습니다. 디렉토리를 만드는 데 사용할 수 있는 유틸리티 메서드 -
mkdir( ) 이 메소드는 디렉토리를 생성하고 성공하면 true를, 실패하면 false를 반환합니다. 실패는 File 개체에 지정된 경로가 이미 존재하거나 전체 경로가 아직 존재하지 않아 디렉터리를 생성할 수 없음을 나타냅니다.
mkdirs() 메소드는 디렉토리와 디렉토리의 모든 상위를 생성합니다.
다음 예는 "/tmp/user/java/bin" 디렉토리를 생성합니다 -
예
import java.io.File; public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // Create directory now. d.mkdirs(); } }
위의 코드를 컴파일하고 실행하여 "/tmp/user/java/bin"을 생성합니다.
참고 − Java는 규칙에 따라 UNIX 및 Windows에서 경로 구분 기호를 자동으로 처리합니다. Windows 버전의 Java에서 슬래시(/)를 사용하면 경로가 여전히 올바르게 해석됩니다.
목록( )을 사용할 수 있습니다. 파일에서 제공하는 메소드 다음과 같이 디렉터리에서 사용 가능한 모든 파일과 디렉터리를 나열하는 개체 -
예
import java.io.File; public class ReadDir { public static void main(String[] args) { File file = null; String[] paths; try { // create new file object file = new File("/tmp"); // array of files and directory paths = file.list(); // for each name in the path array for(String path:paths) { // prints filename and directory name System.out.println(path); } } catch (Exception e) { // if any error occurs e.printStackTrace(); } } }
그러면 /tmp에서 사용 가능한 디렉토리와 파일을 기반으로 다음과 같은 결과가 생성됩니다. 디렉토리 -
출력
test1.txt test2.txt ReadDir.java ReadDir.class
java
자바란 무엇입니까? Java는 1995년 Sun Microsystem에서 출시되었습니다. James Gosling이 개발했습니다. 개발자가 한 번 실행하면 어디에서나 작성할 수 있도록 하는 특정 목표로 설계된 범용 프로그래밍 언어입니다. Java 애플리케이션은 Java Virtual Machine 또는 JVM의 모든 구현에서 실행할 수 있는 바이트코드로 컴파일됩니다. 이 튜토리얼에서는 다음에 대해 자세히 알아볼 것입니다. C#이란 무엇입니까 자바의 역사 C#의 역사 자바의 특징 C#의 특징 자바 대 C# Java 사
자바 8 질문 및 답변 다양한 인증 시험을 준비하는 학생과 전문가를 돕기 위해 특별히 고안되었습니다. 및 취업 면접 . 이 섹션은 인터뷰 질문 및 객관식 질문(MCQ)의 유용한 모음과 적절한 설명과 함께 답변을 제공합니다. SN 질문/답변 유형 1 자바 8 인터뷰 질문 이 섹션에서는 정답을 찾기 전에 먼저 답을 찾아볼 수 있도록 상자에 숨겨진 Java 8 인터뷰 질문 모음을 제공합니다. 2 자바 8 온라인 퀴즈 이 섹션은 정답 및 설명과 함께 한 페이지에 Java 8 MCQ(객관식 질문)의 훌륭한 모음을 제공합니다. 올바른