: ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ค. java.io package๋ก ์ ๊ณต๋๋ค.
Java IO๋ Stream์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. (Stream instance)
: Java์์ ํน์ ์ฅ์น์์ data๋ฅผ ์ฝ๊ฑฐ๋ ํน์ ์ฅ์น๋ก data๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ๋งค๊ฐ ๊ฐ์ฒด
Object Stream์ ํตํด์ ๊ฐ์ฒด๋ ์ ๋ฌํ ์ ์๋ค. ๋จ, ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๋ค ๋๋ ๊ฒ์ ์๋๋ค. ๋ง์ฝ instance๋ฅผ ์์ฑํ clas๊ฐ Serializable interface๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ฉด ๊ฐ๋ฅํ๋ค.
ํ์ค ์
๋ ฅ
: Keyboard. System.in์ผ๋ก ์ ๊ณตํ๋ค.
ํ์ค ์ถ๋ ฅ
: Monitor. System.out์ผ๋ก ์ ๊ณตํ๋ค.
package lecture0715;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class KeyboardInput {
public static void main(String[] args) {
System.out.println("ํค๋ณด๋๋ก ํ ์ค์ ์
๋ ฅํ์ธ์!");
// ํค๋ณด๋(ํ์ค ์
๋ ฅ)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ 1์ค ์
๋ ฅ ๋ฐ๋๋ค.
// ์ด System.in ์ด๋ผ๋ ์ ๊ณต๋ Stream์ ์ฌ์ฉํ๊ธฐ ๋๋ฌด ํ๋ค๋ค.
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
String input = br.readLine();
System.out.println("์
๋ ฅ ๋ฐ์ ๋ฌธ์์ด์ : " + input);
} catch (Exception e) {
}
}
}
package lecture0715;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
// note pad๋ฅผ ๋ง๋ค์ด ๋ณด์
// JavaFX๋ฅผ ์ด์ฉํ๋ค.
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class MyNotepad extends Application {
TextArea textarea;
Button openBtn, saveBtn;
File file;
@Override
public void start(Stage primaryStage) throws Exception {
// ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ ์ฒด ํ
BorderPane root = new BorderPane();
// BorderPane์ ๊ฐ๋ก ์ธ๋ก ๊ธธ์ด
root.setPrefSize(700, 500);
// TextArea ์์ฑ
textarea = new TextArea();
root.setCenter(textarea);
// ๋ฒํผ ๋ง๋ค๊ธฐ
openBtn = new Button("ํ์ผ ์ด๊ธฐ");
openBtn.setPrefSize(150, 40);
openBtn.setOnAction(e -> {
// ์คํํ ํ์ผ์ ์ฐพ์์ ๊ทธ ๋ด์ฉ์ textarea์ ์ถ๋ ฅ
textarea.clear(); // textarea์ ๋ด์ฉ์ ๋ค ์ง์ด๋ค. ์๋ก์ด ๋ด์ฉ์ ๋ฃ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("์คํํ ํ์ผ์ ์ ํํด ์ฃผ์ธ์");
file = fileChooser.showOpenDialog(primaryStage);
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr); // fr์ด ๋ถํธํด์ ์กฐ๊ธ ๋ ์ข์ ํต๋ก(stream)๋ฅผ ๋ซ๋๋ค.
String line = "";
while((line = br.readLine()) != null) {
textarea.appendText(line + "\n");
}
br.close(); // ํต๋ก ๋ซ๊ธฐ
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
}
});
// ์์ ์ฝ๋๋ฅผ ํ์ด์ด ์ฝ๋
// openBtn.setOnAction(new EventHandler<ActionEvent>() {
//
// @Override
// public void handle(ActionEvent arg0) {
// System.out.println("๋ฒํผ์ด ๋๋ ธ์ด์!");
// }
// });
saveBtn = new Button("ํ์ผ ์ ์ฅ");
saveBtn.setPrefSize(150, 40);
saveBtn.setOnAction(e -> {
String text = textarea.getText();
try {
FileWriter fw = new FileWriter(file);
fw.write(text);
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
});
FlowPane flowPane = new FlowPane();
flowPane.setPadding(new Insets(10, 10, 10, 10));
flowPane.setColumnHalignment(HPos.CENTER); // ๊ฐ์ด๋ฐ ์ ๋ ฌ
flowPane.setPrefSize(700, 40);
flowPane.setHgap(10); // ๊ฐ๊ฒฉ
// flowPane์ ๋ฒํผ์ ๋ถ์ธ๋ค.
flowPane.getChildren().add(openBtn);
flowPane.getChildren().add(saveBtn);
root.setBottom(flowPane);
// Scene ๊ฐ์ฒด๋ฅผ ์์ฑ
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("๋ฉ๋ชจ์ฅ");
primaryStage.show();
}
public static void main(String[] args) {
launch(); // static method - ๋ด๋ถ์ ์ผ๋ก thread๊ฐ ์์ฑ๋๋ค.
}
}