728x90
반응형
InputStreamReader으로 사용자 입력값 받기
public class IOTest {
public static void main(String[] args) {
//사용자 입력값 (1byte)
new IOTest().InputStreamReader_1();
new IOTest().InputStreamReader_2();
}
//사용자 입력값 받기(문자)
public void InputStreamReader_1() {
String input = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //보조스트림 끼움
System.out.print("입력 : ");
try {
while((input=br.readLine()) != null) {
if("exit".contentEquals(input)) break;
System.out.println(input);
}
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("====사용자 입력 끝====");
}
//사용자 입력값 받기(숫자)
public void InputStreamReader_2() {
String input = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //보조스트림 끼움
System.out.print("정수 입력 : ");
int sum = 0;
try {
while((input=br.readLine()) != null) {
if("exit".contentEquals(input)) break;
sum += Integer.parseInt(input);
System.out.println(sum);
}
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("====사용자 입력 끝====");
}
}
InputStream/OutputStream (1바이트 기반 스트림)
public class IOTest {
public static void main(String[] args) {
new IOTest().FileIOStream();
new IOTest().URLFileIOStream();
new IOTest().ObjectOutputStream();
new IOTest().ObjectInputStream();
}
//컴퓨터 내 파일 읽고 쓰기
public void FileIOStream() {
try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/abc.txt")); //파일 읽기(컴퓨터내 파일)
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/abcCopy.txt"));) { //파일 쓰기
int input = 0;
while((input =bis.read()) != -1) {
System.out.print((char)input+"-");
bos.write(input); //파일 쓰기!
}
}catch(IOException e) {
e.printStackTrace();
}
}
//URL파일 읽고 쓰기
public void URLFileIOStream() {
String imageUrl = "https://pds.joins.com/news/component/htmlphoto_mmdata/201909/01/136ad58b-b410-4db8-939b-ec0b40b9d1f5.jpg"; //이미지 주소 복사
URL url = null;
URLConnection conn = null;
try {
url = new URL(imageUrl);
conn = url.openConnection();
try(BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/cat.jpg"))) {
int data = 0;
while((data = bis.read()) != -1) {
bos.write(data);
}
}
}catch(IOException e) {
e.printStackTrace();
}
}
//파일 저장
// ObjectInput/OutputStream을 통해
// 객체를 기록/열람하려면, Serializable 인터페이스를 반드시 구현해야 함
public void ObjectOutputStream() {
Book bookArr[] = {
new Book("어린왕자", "생택쥐페리"),
new Book("연금술사", "파울로 코엘료"),
new Book("나무", "베르나르 베르베르"),
new Book("카스테라", "박민규"),
new Book("주홍글씨", "나사니엘 호손")
};
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("bookList.txt"));) {
oos.writeObject(bookArr);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("저장 완료!");
}
//파일 읽기
public void ObjectInputStream() {
Book[] bookList = new Book[10];
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("bookList.txt"))){
bookList = (Book[])ois.readObject();
}catch(ClassNotFoundException | IOException e) {
e.printStackTrace();
}
for(int i=0; i<bookList.length; i++) {
System.out.println(bookList[i]);
}
System.out.println("읽기 완료!");
}
}
FileReader/FileWriter (2바이트 문자 기반)
public class IOTest {
public static void main(String[] args) {
new IOTest().FileRW();
}
//파일 읽고 쓰기 (한글로 된 파일은 FileReader 사용해서 읽을 것!)
public void FileRW() {
try(BufferedReader br = new BufferedReader(new FileReader("bookList.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("bookListCopy.txt"));){
String data = "";
while((data = br.readLine()) != null) {
System.out.println(data);
bw.write(data);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
04.23(스레드) (0) | 2020.04.23 |
---|---|
04.22(예외 처리/ IO/ Collection/ Generics) (0) | 2020.04.22 |
04.20(URL예제 - 웹 상의 이미지 파일 다운로드) (0) | 2020.04.20 |
04.19(SimpleDateFormat 패턴) (0) | 2020.04.19 |
04.17(API - Calendar 예제) (0) | 2020.04.17 |