자바

JAVA STEP 44. File 입출력 예제

IT의 큰손 2023. 2. 27. 18:40
728x90

★ 예제 1) 

  • 요구사항 : 특정 이름을 찾아 다른 이름으로 변환 후 파일을 다른 이름으로 저장하시오.
  • 조건
    • '유재석' -> 메뚜기
    • 저장할 파일명 : 이름수정_변환.dat
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

public class Q0120 {

	public static void main(String[] args) {
		
		//m1();
		m2();
	}

	private static void m2() {
			
		try {
				
				BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Downloads/파일_입출력_문제/이름수정_변환.dat"));
				
				String line = null;
				
				while ((line = reader.readLine()) != null) {
					
					System.out.println(line);
					
				}
				reader.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/이름수정.dat"));
			BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/이름수정_변환.dat"));
			
			String line = null;
			int lineNumber = 0;
			
			while ((line = reader.readLine()) != null) {
				line = line.replace("유재석", "메뚜기");
				writer.write(line);
			}
			reader.close();
			writer.close();
			
			System.out.println("완료");
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
		

}
  • 실행결과
  •  

예제 1 실행결과

 

★ 예제 2)

  • 요구사항 : 숫자를 한글로 바꾼 뒤 파일을 다른 이름으로 저장하시오.
  • 조건
    • 0 → 영, 1 → 일 ... 9 → 구
    • 저장할 파일명: 숫자_변환.dat
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

public class Q0121 {
	
	public static void main(String[] args) {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자.dat"));
			BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자_변환.dat"));
			
			String line = null;
			
			while ((line = reader.readLine()) != null) {
				line = line.replace("0", "영");
				line = line.replace("1", "일");
				line = line.replace("2", "이");
				line = line.replace("3", "삼");
				line = line.replace("4", "사");
				line = line.replace("5", "오");
				line = line.replace("6", "육");
				line = line.replace("7", "칠");
				line = line.replace("8", "팔");
				line = line.replace("9", "구");
				writer.write(line);
			}
			reader.close();
			writer.close();
			
			System.out.println("완료");
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		m2();
	}
	private static void m2() {
		
		try {
				
				BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자_변환.dat"));
				
				String line = null;
				
				while ((line = reader.readLine()) != null) {
					
					System.out.println(line);
					
				}
				reader.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		
	}

}
  • 실행결과
  •  

예제 2 실행결과

 

★ 예제 3) 

  • 요구사항 : 성적을 확인 후 합격자/불합격자 명단을 출력하시오.
  • 조건
    • 합격 조건: 3과목 평균 60점 이상
    • 과락 조건: 1과목 40점 미만
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;

public class Q0122 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		m1();
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/성적.dat"));
			
			String line = null;
			String pass = "[합격자]\n";
			String nopass = "[불합격자]\n";
			
			while ((line = reader.readLine()) != null) {
			
				String [] list = line.split(",");
				
				int kor = Integer.parseInt(list[1]);
				int eng = Integer.parseInt(list[2]);
				int math = Integer.parseInt(list[3]);
				
				int avg = (kor+eng+math)/3;
				
				if(kor>=40&&eng>=40&&math>=40&&avg>=60) {
					pass += String.format("%s\n", list[0]);
				}else {
					nopass += String.format("%s\n", list[0]);
				}
				
			}
			reader.close();
			
			System.out.println(pass);
			System.out.println(nopass);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
			
	}
	
	
	
}
  • 실행결과
  •  

예제 3 실행결과

 

★ 예제 4)

  • 요구사항 : 이름을 입력받아 회원 정보를 검색 후 출력하시오.
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class Q0123 {

	public static void main(String[] args) {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/단일검색.dat"));
			
			String line = null;
			
			Scanner scan = new Scanner(System.in);
			
			System.out.print("이름 : ");
			String name = scan.nextLine();
			
			while ((line = reader.readLine()) != null) {
				
				String [] list = line.split(",");
				
				String number = list[0];
				String address = list[2];
				String call = list[3];
				
				if(list[1].equals(name)) {
					 System.out.printf("[%s]\n", list[1]);
					 System.out.printf("번호 : %s\n", list[0]);
					 System.out.printf("주소 : %s\n", list[2]);
					 System.out.printf("전화 : %s\n", list[3]);
					 break;
				}
				
			}
			reader.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
  • 실행결과
  •  

예제 4 실행결과

 

★ 예제 5)

  • 요구사항 : 이름을 입력받아 회원 주문 정보를 검색 후 출력하시오.
  • 소스코드 
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class Q0124 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		m1();
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/검색_회원.dat"));
			BufferedReader reader2 = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/검색_주문.dat"));
			
			String line = null;
			String line2 = null;
			
			Scanner scan = new Scanner(System.in);
			System.out.print("이름 : ");
			String name = scan.nextLine();
			String num = "";
			String address = "";
			
			String result = String.format("==== 구매 내역 ====\n"
										+ "[번호]\t[이름]\t[상품명]\t[개수]\t[배송지]\n");
			
			while ((line = reader.readLine()) != null) {
				
				String list [] = line.split(",");
				
				if(list[1].equals(name)) {
					num = list[0];
					address = list[2];
					break;
				}
			}
				
				if (!num.equals("")) {
					System.out.print(result);
					while ((line2 = reader2.readLine()) != null) {
						
						String list2 [] = line2.split(",");
						
						if(list2[3].equals(num)) {
							System.out.printf("%s\t%s\t%s\t%s\t%s\r\n"
											, list2[0]
											, name
											, list2[1]
											, list2[2]
											, address);
						}
						
					}
				
					
					
				
			}
			reader.close();
			reader2.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

}
  • 실행결과
  •  

예제 5 실행결과

 

★ 예제 6)

  • 요구사항 : 모든 괄호가 서로 짝이 맞는지 검사하시오.
  • 조건
    • 대상 괄호 : (), {}
    • Stack 사용
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Stack;

public class Q0125 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		m1();
	}

	private static void m1() {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/자바소스.java"));
			
			Stack<Character> stack = new Stack<Character>();
			
			String line = null;
			String Text = "";
			
			while ((line = reader.readLine()) != null) {
				
				Text += line + "\r\n";
				
			}
			reader.close();
			
			for(int i=0; i<Text.length(); i++) {
				
				char c = Text.charAt(i);
				
				if(c == '(' || c == '{') {
					stack.push(c);
				}else if(c == ')' || c == '}') {
					stack.pop();
				}
			}
			
			if(stack.size()==0) {
				System.out.println("올바른 소스 입니다.");
			}else {
				System.out.println("올바르지 않은 소스 입니다.");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	
		
	}
	
	

}
  • 실행결과
  •  

예제 6 실행결과

 

예제 7) 직원들의 지각과 조퇴를 카운트하시오.

  • 조건
    • 출근 : 오전 9시
    • 퇴근 : 오후 6시
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;

public class Q0126 {

	public static void main(String[] args) {
		
		m1();

	}

	private static void m1() {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/출결.dat"));
			ArrayList<Employee> list = new ArrayList<Employee>();
			
			String line = null;
			String name = "";
			
			while ((line = reader.readLine()) != null) {
				
				String [] temp = line.split(",");
				
				Employee e = getEmployee(list, temp[1]);
				
				if(e==null) {
					e = new Employee(temp[1], 0, 0);
					list.add(e);
				}
				
				if(temp[2].compareTo("9:00")>0) {
					e.in++;
				}
				
				if(temp[3].compareTo("18:00")<0) {
					e.out++;
				}
				
			}
			
			System.out.println("[이름]\t[지각]\t[조퇴]");
			
			for(Employee e : list) {
				System.out.printf("%s\t%2d회\t%3d회\n"
								, e.name
								, e.in
								, e.out);
			}
			reader.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	private static Employee getEmployee(ArrayList<Employee> list, String name) {
		
		for(Employee e : list) {
			if(e.name.equals(name)) {
				return e;
			}
		}
		return null;
	}

}
class Employee {
	public String name;
	public int in;
	public int out;
	
	public Employee(String name, int in, int out) {
		this.name = name;
		this.in = in;
		this.out = out;
	}

	@Override
	public String toString() {
		return "[name=" + name + ", in=" + in + ", out=" + out + "]";
	}
	
}
  • 실행결과
  •  

예제 7 실행결과

 

728x90