씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[Java] 입출력(IO - InputOutput)
Java 관련/Java

[Java] 입출력(IO - InputOutput)

2021. 11. 19. 14:16
728x90


package com.test01;

import java.io.File;
import java.io.IOException;

public class MTest01 {
	
	public static void main(String[] args) {

		// C에 test_io라는 폴더 생성
		File fi = new File("C:/test_io");

		// test_io폴더가 있으면 exists출력 없으면 make directory출력 하고 폴더 생성
		if (fi.exists()) {
			System.out.println("exists");
		} else {
			System.out.println("make directory");
			fi.mkdirs();
		}
		
		// fi 안에 (밑에) AA라는 folder(directory) 생성
		File fiAA = new File(fi, "AA");
		fiAA.mkdir();

		// test_io 아래 BB폴더 생성
		File fiBB = new File("C:\\test_io","BB");
		fiBB.mkdir();
		
		// AA 밑에 a.txt 파일 생성
		File aTxt = new File(fiAA, "a.txt");
		
		try {
			// checked exception
			aTxt.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}

 

첫 번째 실행(위쪽)과 두 번째 실행(아래쪽) 결과

​

​

package com.test01;

import java.io.File;

public class MTest02 {
	
	public static void main(String[] args) {
		File fi = new File("C:\\");
		prnList01(fi);
		System.out.println("--------------------------------------");
		prnList02(fi);
	}
	
	public static void prnList01(File fi) {
		for (String list : fi.list()) {
			System.out.println(list);
		}
	}
	
	public static void prnList02(File fi) {
		//파일과 디렉토리를 구분해서 출력하자.
		//file : ...
		//dir : ...
		//폴더의 갯수 : 0개
		//파일의 갯수 : 0개
		int fileCount = 0;
		int dirCount = 0;
		for (File f : fi.listFiles()) {
			if(f.isDirectory()){
			System.out.println("dir : " + f.getName());
			dirCount++;
			} else if(f.isFile()) {
				System.out.println("file : " + f.getName());
				fileCount++;
			} 
		}
		System.out.println("폴더의 갯수 : " + dirCount);
		System.out.println("파일의 갯수 : " + fileCount);
	}

}

이 코드는 컴퓨터마다 실행되는 결과가 다르니 한번 직접 출력해보세요~

​

​

package com.test01;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MTest03 {

	public static void main(String[] args) {
		
		File fi = new File("a.txt");
		try {
			MyOutput(fi);
			MyInput(fi);
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
		
	// throws : 해당 메소드 내부에서 발생할 수 있는 예외를, 메소드 호출하는 곳으로 위임
	private static void MyOutput(File fi) throws IOException{
		FileOutputStream fo = new FileOutputStream(fi);
		
		for(int i = 65; i < 91; i++) {
			fo.write(i);
		}
		//반드시!!
		fo.close();
	}
	
	private static void MyInput(File fi) throws IOException {
		FileInputStream fin = new FileInputStream(fi);
		int res = 0;
		
		while((res = fin.read()) != -1) {
			System.out.print((char)res);
		}
		fin.close();
	}
	
}

MTest03.java 실행 결과

이 코드를 출력시키면 콘솔 창에 위와 같은 결과가 나오고 a.txt라는 파일이 생기며 해당 폴더 안에도 이 내용이 적혀 있습니다.

​

​

​

package com.test01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MTest04 {
	
	public static void main(String[] args) throws IOException {
		File fi = new File("b.txt");
		
		MyOutput(fi);
		MyInput(fi);
	}
	
	// read
	private static void MyInput(File fi) throws IOException {
		FileReader fr = new FileReader(fi);
		int ch;
		while((ch = fr.read()) != -1) {
			System.out.print(ch);
		}
		fr.close();
		
	}
	
	// write
	private static void MyOutput(File fi) throws IOException {
		FileWriter fw = new FileWriter(fi, false);
		
		fw.write("연습중입니다.\n");;
		fw.append("abc\t").append("def");
		
		fw.close();
	}

}

​

 

MTest04.java의 실행 후 콘솔 창의 결과(위쪽)과 실행 후 생긴 b.txt 파일 안의 내용 결과(아래쪽)

​

​

​

package com.test01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MTest05 {

	public static void main(String[] args) {
		File fi = new File("b.txt");
		
		MyOutput(fi);
		MyInput(fi);
	}
	
	
	private static void MyOutput(File fi) {
		FileWriter fw = null;
		
		try {
			fw = new FileWriter(fi, true);
			fw.write("다시 연습합니다.");
			fw.append("abc\n");
		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			try {
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			//close 알아서
		}
	}
	
	private static void MyInput(File fi) {
		//try with resources
		try(FileReader fr = new FileReader(fi)){
			int ch;
			
			while((ch = fr.read()) != -1 ) {
				System.out.print((char)ch);
			}
			
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}

실행시킬 때마다 누적됩니다.

b.txt 다시 볼까요?


package com.test02;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MTest01 {

	public static void main(String[] args) throws IOException {
		
		String file = "a.jpg";
		/* 
		파일 객체를 만들어서 넣고있음
		FileInputStream fi = new FileInputStream(file);
		BufferedInputStream bi = new BufferedInputStream(fi);
		한줄로 만들수 있다 
		*/
		
		BufferedInputStream bi = new BufferedInputStream(new FileInputStream(file));
		
		FileOutputStream fo = new FileOutputStream(new File("c.jpg"));
		
		int a = 0;
		while ((a = bi.read()) != -1){
			fo.write(a);
		}
		
		//가장 마지막에 연결한 객체를 가장 먼저 닫자!!
		fo.close();
		bi.close();
	}
}

이 코드는 폴더 안에 a.jpg 파일이 있는 상태에서 실행시켜주세요!

​

728x90

'Java 관련 > Java' 카테고리의 다른 글

[Java] 람다식(Lamda Expression)  (0) 2021.11.21
[Java] 쓰레드(Thread)  (0) 2021.11.20
[Java] 예외 처리(Exception)  (0) 2021.11.18
[Java] Comparable & Comparator  (0) 2021.11.17
[Java] 이터레이터(iterator)  (0) 2021.11.16
    'Java 관련/Java' 카테고리의 다른 글
    • [Java] 람다식(Lamda Expression)
    • [Java] 쓰레드(Thread)
    • [Java] 예외 처리(Exception)
    • [Java] Comparable & Comparator
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바