일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ruby
- 単語
- C로 시작하는 컴퓨터 프로그래밍4판
- 비즈니스일본어
- 디지몬
- java
- 반다이몰
- 日本語
- javascript
- 건담베이스
- rails
- 건담
- springboot
- Flutter
- 연습문제
- jsp
- メソッド
- rails7
- nico
- vscode
- 일본어
- 一日一つメソッド
- 자바
- DART
- html
- 인프런
- Python
- CSS
- Spring
- Web
- Today
- Total
AR삽질러
Java - 입출력(I/O) 본문
Java - 입출력(I/O)
input / output의 약자
데이터 입력의 대상 : 키보드, 파일, 네트워크를 통해 들어오는 데이터
데이터 출력의 대상 : 모니터, 파일, 외부 네트워크
Stream?
- Java에서 데이터는 Stream을 통해 입출력된다.
Stream -> 데이터를 전달하는데 사용되는 장치로 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말한다.
프로그램의 출발지, 도착지에 따라 입력스트림, 출력스트림으로 사용된다.
In -> Read
- 모든 작업시 in이나 read 라는 단어가 있으면 읽기기능
Out -> Write
- 모든 작업시 out이나 write 라는 단어가 있다면 쓰기기능
입출력 스트림의 종류
구분 | 바이트기반스트림 | 문자기반스트림 | ||
입력스트림 | 출력스트림 | 입력스트림 | 출력스트림 | |
최상위 클래스 | InputStream | OutputStream | Reader | Writer |
하위클래스 | FileInputStream | FileOutPutStream | FileReader | FileWriter |
InputStream의 read()
- read()는 byte의 내용을 int타입으로 읽어낸다. (int값이 -1인경우 더이상 읽어낼수 있는 데이터가 없는경우)
- read() -> int : 한 byte에 쓰여진 데이터
- read(byte[]) -> int :읽어낸 데이터는 byte[]안으로 들어가고 int는 몇 개나 새로운 데이터를 읽어냈는지를 말한다.
OutputStream의 write()
- write(int)는 대상으로 데이터를 전송
- write(int) -> 한 바이트의 데이터를 전송
- write(byte[]) -> byte[]안에 있는 데이터들을 전송
- write(byte[], int, int) -> byte[]안에 있는 데이터들을 시작 위치에서부터 몇개의 개수만큼 데이터들을 전송
File class
File byte(I/O)
- 스트림은 바이트 단위로 데이터를 전송한다.
- byte Input
- FileInputStream클래스를 이용하여 입력한다.
- read()메소드를 이용하여 파일의 자료를 가져온다.
- 데이터의 끝은 -1
- byte Output
- FIleOutputStream클래스를 이용하여 출력한다.
- 주로 write()메소드를 통해 내보내기를 한다.
File Class생성자
생성자 | 설명 |
File(String pathname) | 실제 경로명을 문자열로 처리한다. |
File(String parent, String child) | 폴더명과 파일명으로 처리한다. |
File(File parent, String child) | 폴더객체와 파일명으로 처리한다. |
File(URL uri) | 웹상의 주소로 처리한다. |
File Class 메소드
메소드 | 설명 |
createNewFile() | 파일 생성 후 (true / false)반환 |
createTempFile(String prefix, String suffix, File dir) | 임시파일 생성 |
deleteOnExit() | 프로그램이 끝날때 삭제된다. |
delete() | 즉시 삭제된다. |
length() | 파일의 크기(바노한형은 long형) |
성능향상 보조스트림
- 기본적으로 출력스트림은 내부에 작은 버퍼를 가지고 있다. 메모리버퍼를 추가로 제공하여 프로그램의 실행 성능을 향상시키는 것들에는
1) 바이트 기반스트림 -> BufferedInputStream, BufferedOutputStream
2) 문자기반스트림 -> BufferedReader, BufferedWriter
- BufferedOutputStream은 바이트 기반 출력스트림에 연결되어 버퍼를 제공해주는 보조스트림
- BufferedWriter는 문자기반 출력스트림에 연결되어 버퍼를 제공해주는 보조스트림이다.
-BufferedOutputStream과 BufferedWriter는 프로그램에서 전송한 데이터를 내부버퍼에 쌓아두었다가 버퍼가 꽉차면 버퍼의 모든 데이터를 한꺼번에 보낸다.
BufferedOutputStream bos = new BufferedOutputStream(바이트 기반출력 스트림);
BufferedWriter bw = new BufferedWriter(문자기반 출력스트림);
Ex01
package io;
import java.io.File;
public class ex01 {
public static void main(String[] args) throws Exception{ // 직접try ~ catch블록으로 작성
// 파일이 없어도 상관없다.
File file1 = new File("D:\\test");
// 파일경로와 파일명으로 만들 수 있다.
File file2 = new File("D:\\test", "aaa.txt");
// 파일경로 (폴더)까지만 만들 수 있다.
File file3 = new File("D:\\test");
// 파일경로에 객체를 넣어서 만들수 있다.
File file4 = new File(file3, "aaa.txt");
// File.separator : 폴더구별자
File dir = new File("D:" + File.separator + "aaa");
File file = new File(dir, "aaa.txt");
}
}
Ex02
package io;
import java.io.*;
public class Ex02 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test" + File.separator + "aaa");
if (!dir.exists()) {
boolean result = dir.mkdirs();
if (result) {
System.out.println("디렉토리 생성 성공");
} else {
System.out.println("디렉토리 생성 실패");
}
}
// 임시파일은 앞에 이름을 정하고 중간에 임의의 숫자가 들어간다.
// 뒤에 이름을 정한다.(확장자)
File imsi = File.createTempFile("java", ".dat", dir);
imsi.deleteOnExit();
// 프로그램이 끝날때 삭제가 된다.
Thread.sleep(5000); // 프로그램5초간 sleep
//file.delete();
}
}
Ex03
package io;
import java.io.File;
import java.io.FileOutputStream;
public class Ex03 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test", File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileOutputStream fos = new FileOutputStream(file, true);
// file이 없으면 만든다.
// 객체생성시 true이면 이어쓰기, false이면 다시쓰기가 된다.
// fos.write(65); // 아스키코드
// fos.write('B');
// 문자열을 byte배열로 반환
String msg = "\nHello Java World";
byte[] by = msg.getBytes();
fos.write(by, 6, 4); // 인덱스위치 6 길이4
fos.close();
}
}
Ex04
package io;
import java.io.File;
import java.io.FileInputStream;
public class Ex04 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test" + File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileInputStream fis = new FileInputStream(file);
while(true) {
int data = fis.read(); // read()메소드를 한글자 아스키코드로 받는다.
if(data == -1) {
break;
}
System.out.print((char)data);
}
fis.close();
}
}
Ex05
package io;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
public class Ex05 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test", File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 버퍼에 담는다.(성능향상)
DataOutputStream dos = new DataOutputStream(bos);
// 내가 원하는 데이터 형태로 넣는다.(기능향상)
int a = 10;
double b = 3.14;
String c = "Hellow Java";
dos.writeInt(a);
dos.writeDouble(b);
dos.writeUTF(c);
dos.close();
bos.close();
fos.close();
}
}
Ex06
package io;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
public class Ex06 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test", File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bus = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bus);
// 데이터를 넣은 순서대로 꺼낸다.
int a = dis.readInt();
double b = dis.readDouble();
String c = dis.readUTF();
System.out.println("a : " + a);
System.out.println("b : " + b);
System.out.println("c : " + c);
dis.close();
bus.close();
fis.close();
}
}
Ex07
package io;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
public class Ex07 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test" + File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.print("안녕하세요");
pw.println(30);
pw.println("I/O입출력입니다.");
pw.println("PSC만세!");
pw.close();
bw.close();
fw.close();
}
}
Ex08
package io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class Ex08 {
public static void main(String[] args) throws Exception{
File dir = new File("D:\\test" + File.separator + "aaa");
File file = new File(dir, "aaa.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while(true) {
String msg = br.readLine();
if(msg == null) { // text에서 파일의 끝은 null이다.
break;
}
System.out.println(msg);
}
br.close();
fr.close();
}
}
'JAVA' 카테고리의 다른 글
Java - ArrayList 연습문제_회원관리 (0) | 2023.04.17 |
---|---|
Java - Collection-Map연습문제 (0) | 2023.04.17 |
Java - Collection-List연습문제 (0) | 2023.04.17 |
Java - Collection-Set연습문제 (0) | 2023.04.17 |
Java - Collection Framework (Set Collection) (0) | 2023.04.14 |