728x90
반응형
[ IO ]
File
java.io.File
directory를 생성하는 예제
/TestFile.java
import java.io.File;
public class TestFile {
public static void main(String[] args) {
// java.io.File class : 파일을 제어하는 기능을 제공
String path = "C:" + File.separator + "kosta203"; //File.separator -> window : //
File dir = new File(path);
System.out.println(dir);
//exists() : 존재여부 확인
System.out.println(dir.exists()); //true
//isFile() : 파일인지
System.out.println(dir.isFile()); //false
//isDirectory() : 디렉토리(폴더)인지
System.out.println(dir.isDirectory()); //true
//getPath() : 경로확인
System.out.println(dir.getPath());
// 새로운 directory 생성
String path2 = dir.getPath() + File.separator + "iotest2";
File dir2 = new File(path2);
System.out.println(dir2.mkdirs()); //true
//getParentFile() : 상위 디렉토리로 이동
File dir3 = dir2.getParentFile();
System.out.println(dir2.getPath()); // C:\kosta203\iotest2
System.out.println(dir3.getPath()); // C:\kosta203
//kosta203 directory에 있는 파일 및 디렉토리 정보를 모두 나열
String array[] = dir3.list();
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
/* 출력값 :
* bin
* CS50
* Dev-Cpp
* iotest
* iotest2
* Python
* python_test
* SE-study-workspace
* se-workspace
* tool
*/
}
// 파일과 디렉토리를 분류하여 나열
File array2[] = dir3.listFiles();
for (int i= 0; i < array2.length; i++) {
if (array2[i].isFile())
System.out.println("file: " + array2[i].getName());
else
System.out.println("directory: " + array2[i].getName());
}
/* 출력값:
* file: a.txt
* directory: bin
* directory: CS50
* directory: Dev-Cpp
* directory: iotest
* directory: iotest2
* directory: Python
* directory: python_test
* directory: SE-study-workspace
* directory: se-workspace
* directory: tool
*/
}
}
Stream
java.io
Output 예제
list의 정보를 파일에 입력하기
/TestOutPut2.java
package step2;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
public class TestOutPut2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("줄리엣");
list.add("클레어");
list.add("쥬디");
//list의 정보를 파일에 입력하기
try
{
//1. 파일 객체 만들기 : FileWriter class
FileWriter fw = new FileWriter("C:\\kosta203\\iotest\\friend.txt");
//2. 입출력 객체 만들기 : PrintWriter class
PrintWriter pw = new PrintWriter(fw);
//3. 정보 입력
int i= 0;
while(i < list.size()) {
pw.println(list.get(i));
i++;
}
//4. 닫기
pw.close();
//5. exception 발생 여부 확인
System.out.println("exception 발생 없이 정상 수행됨");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Scanner를 이용한 I/O구현 프로그램
Main Class
/TestOutput3.java
import java.io.File;
import java.io.IOException;
public class TestOutput3 {
public static void main(String[] args) {
MenuService service = new MenuService();
String path =
"C:" + File.separator + "kosta203"
+ File.separator + "iotest2"
+ File.separator + "order.txt";
// try
try {
service.order(path);
// exception 발생 여부 확인
System.out.println("exception 발생 없이 정상 수행됨");
}
// catch
catch (IOException e) {
e.printStackTrace();
}
}
}
Service Class
/MenuService.java
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
//throws
public class MenuService{
public void order(String path) throws IOException { // throws
// Scanner로 입력받기
Scanner s = new Scanner(System.in); //콘솔에 입력되는 stream
//파일에 출력할 stream
// 1. 파일 객체 만들기 2. 입출력 객체 만들기
PrintWriter pw = new PrintWriter(new FileWriter(path));
System.out.println("**점심메뉴**");
// 주문 끝 메세시가 입력될 때까지 계속 반복한다.
while (true) {
System.out.print("메뉴를 입력하세요: ");
// scanner로 입력받은 값 menu에 할당
String menu = s.nextLine();
if (menu.equals("주문 끝"))
break;
else
pw.println(menu); //파일에 기록
}
System.out.println("==주문완료==");
System.out.println(path + "에 주문목록이 저장되었습니다.");
s.close(); // scanner 종료
pw.close();
}
}
Console
File
/order.txt
Input 예제
파일의 정보를 읽어오기
/TestOutPut2.java
package step5;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestInput2 {
public static void main(String[] args) {
String path =
"C:" + File.separator + "kosta203"
+ File.separator + "iotest2"
+ File.separator + "TheRoyalTenenbaums.txt";
try
{
// 1. FileReader(path) : 파일 import class로 객체 만들기
FileReader fr = new FileReader(path);
// 2. BufferedReader(): 파일 reading class로 객체 만들기
BufferedReader br = new BufferedReader(fr);
//3. 파일 한줄씩 읽어오기
while (br.ready()) {
System.out.println(br.readLine());
}
/* 출력값:
* 《로얄 테넌바움》(The Royal Tenenbaums)은 2001년 미국의 코미디 드라마 영화이다....
*/
}
catch (FileNotFoundException fe)
{
fe.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
지금까지 배운것을 다 정리해보자 !!
Main class
1 . Output
/TestIOSerivce.java
package step6;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
public class TestIOService {
public static void main(String[] args) {
String path = "C:" + File.separator + "kosta203" + File.separator + "iotest3"+ File.separator + "test.txt";
IOService service = new IOService();
ArrayList<String> list = new ArrayList<String>();
list.add("노가리");
list.add("참치");
list.add("삼겹살");
try
{
service.saveFile(path, list);
}
catch (FileNotFoundException fe)
{
fe.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
2 . Input
/TestIOService2.java
package step6;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
public class TestIOService2 {
public static void main(String[] args) {
String path =
"C:" + File.separator +
"kosta203" + File.separator +
"iotest3"+ File.separator + "test.txt";
IOService service = new IOService();
ArrayList<String> list;
try
{
list = service.readFile(path);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
catch (FileNotFoundException fe)
{
fe.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Service class
/IOService.java
package step6;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
public class IOService {
/**
* path를 이용해 디렉토리 생성하고 파일 생성하여, 매개변수 리스트의 정보를 파일에 출력하는 메서드
*
* @param path
* @param list
* @throws IOException
*/
public void saveFile(String path, ArrayList<String> list) throws IOException {
// 1. 디렉토리 생성
File file = new File(path);
File dir = file.getParentFile(); // dir: 파일의 부모 디렉터리
boolean result = dir.mkdirs();
System.out.println("디렉토리 생성 :" + result);
// 2. 읽을 파일 대상 객체 생성
PrintWriter pw = new PrintWriter(new FileWriter(path));
// 3. 파일에 정보 입력
for (int i = 0; i < list.size(); i++) {
pw.println(list.get(i));
}
// 4. 파일 닫기
pw.close();
}
/**
* path를 이용해 파일의 정보를 읽어와 arraylist에 담은 후 반환해주는 메서드
*
* @param path
* @return
* @throws IOException
*/
public ArrayList<String> readFile(String path) throws IOException{
//읽은 정보를 담아 반환해줄 list 선언
ArrayList<String> list = new ArrayList<String>();
// 1. 파일 import class로 객체 만들기
FileReader fr = new FileReader(path);
// 2. 파일 reading class로 객체 만들기
BufferedReader br = new BufferedReader(fr);
// 3. 파일 한줄씩 읽어오기
while (br.ready()) {
list.add(br.readLine());
}
// 4. 파일 닫기
br.close();
return list;
}
}
728x90
반응형