45일차 java 연산(2023-02-24)

권단비·2023년 2월 24일
0

IT

목록 보기
85/139

[Eclipse 연습]

[계산]
//1. 아래와 같이 파일 복사되도록 프로그램을 짜시오
//
//대상 파일: a.pptx
//사본 이름: d.pptx
package IOStream;
import java.io.*;
import java.util.*;
public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("대상 파일: ");
		String input = sc.nextLine();
		System.out.print("사본 이름: ");
		String output = sc.nextLine();

		try (InputStream in = new FileInputStream(input); OutputStream out = new FileOutputStream(output)) {
			int data;
			data = in.read();
			while (true) {
				if (data == -1)
					break;
				out.write(data);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
[결과값]
대상 파일: C:\Users\USER\Documents\IT\열혈자바(ppt)\열혈 Java Chapter 02.pptx
사본 이름: C:\Users\USER\Documents\IT\열혈자바(ppt)\열혈 Java Chapter 02복사본.pptx

[계산]
//data.txt를  console 화면에 뿌리도록 하시오.
package IOStream;
import java.io.*;
import java.util.*;
public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("읽을 파일: ");
		String src = sc.nextLine();

		try (Reader in = new FileReader(src)) {
			int data;
			while (true) {
				data = in.read(); // 2byte씩 읽음
				if (data == -1)
					break;
				System.out.print((char) data);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
[결과값]
읽을 파일: data.txt
A한

읽을 파일: C:\Users\USER\Documents\workspace-sts-3.9.11.RELEASE\EX\src\UpDownGame.java
import java.util.Scanner;
public class UpDownGame {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = (int) (Math.random() * 100) + 1;
		boolean run = true;

		while (run) {
			for (int i = 9; i >= 0; i--) {
				System.out.print("숫자를 입력해주세요 : ");
				int input = sc.nextInt();
				if (input > num) {
					System.out.println("Down ====> " + i + "번 남아 있습니다.");
				} else if (input < num) {
					System.out.println("Up ====> " + i + "번 남아 있습니다.");
				} else if (input == num) {
					System.out.println("일치");
					break;
				}
				if (i == 0) {
					System.out.println("기회를 전부 소진하였습니다. \n정답은 [" + num + "] 입니다.");
				}
			}
			System.out.println("게임시작 y / 게임종료 n");
			String rePlay = sc.next();
			if (rePlay.equals("y") || rePlay.equals("Y")) {
				continue;
			} else {
				System.out.println("종료합니다.");
				break;
			}
		}
	}
}

[BufferedWriter]

[계산]
package IOStream;
import java.io.*;
public class A_BufferedWriterTest {
	public static void main(String[] args) {
		String ks = "공부에 있어서 돈이 꼭 필요한 것은 아니다.";
		String es = "Life is long if you know how to use it.";

		try (BufferedWriter bw = new BufferedWriter(new FileWriter("String.txt"))) {
			bw.write(ks, 0, ks.length());
			bw.newLine(); // 줄 바꿈 문자를 삽입(운영체제 별 줄 바꿈의 표시 방법이 다름)
			bw.write(es, 0, es.length());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
[결과값]

[BufferedReader]

[계산]
package IOStream;
import java.io.*;
public class A_BufferedReaderTest {
	public static void main(String[] args) {
		try (BufferedReader br = new BufferedReader(new FileReader("String.txt"))) {
			String str;
			while (true) {
				str = br.readLine(); // 한 문장 읽어 들이기
				if (str == null)
					break;
				System.out.println(str);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
[결과값]
공부에 있어서 돈이 꼭 필요한 것은 아니다.
Life is long if you know how to use it.

[프로세스와 스레드(process & thread)]

단일 프로세스 : 명령어 기반, 한 번에 한 작업만 실행 가능.(Dos, CMD)
멀티 프로세스 : 여러 개의 프로그램 동시 작업 가능.(windows)

멀티 프로세스 원리 : CPU는 하나지만, 속도가 빠르기 때문에 번갈아 실행시킨다.(컨텍스트 스위칭)
(A프로그램 실행 후 한 번 중단했다가 B프로그램을 실행시킴 | 끊기지 않고 동시 실행된다.)

▶ 프로세스 : 실행 중인 프로그램, 자원(resources)과 스레드로 구성
▶ 스레드  : 프로세스 내에서 실제 작업을 수행. 
             모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.
             (하나의 프로그램(프로세스) 안에 또 다른 프로그램(프로세스))

1.main자체가 한 개의 스레드. main스레드가 돌아간다. main함수를 먼저 돌린다.
2.ThreadTest 프로세스가 돌아간다.

[계산]
package ThreadTest;
public class MultiThreadTest {
	public static void main(String[] args) {
		// 프로그램이 3개 돌아간다. MultiThreadTest main(), MyThread1 run(), MyThread2 run()
		// 스레드는 별도의 프로그램이기 때문에 main이 먼저 끝나고 나서도 MyThread1과 MyThread2이 실행된다.
		MyThread1 th1 = new MyThread1();
		MyThread2 th2 = new MyThread2();
		th1.start(); // OS한테 스레드 돌릴 거니까 돌아갈 수 있도록 방을 하나 생성해달라 요청.(OS가 스레드를 관리)
		th2.start();
//		th1.run(); // 으로 호출하면 실행되지만 절대 하면 안된다.
	}
}
class MyThread1 extends Thread { // 동시에 돌리고 싶은 작업을 분리
	public void run() { // run() : main의 역할
		for (int i = 0; i < 300; i++) {
			System.out.print("-");
		}
	} // run()
}
class MyThread2 extends Thread {
	public void run() {
		for (int i = 0; i < 300; i++) {
			System.out.print("|");
		}
	} // run()
}
[결과값]
------------------------------||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||--------------||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

0개의 댓글