FileEx01 continued
import java.io.File;
import java.io.IOException;
public class FileEx01 {
public static void main(String[] args) {
// File 생성
// 파일이나 디렉토리 경로를 통해서 생성
// 파일이나 디렉토리가 반드시 존재하지 않아도 객체 생성 가능하다
File f1 = new File("c:\\Java"); // windows
File f2 = new File("c:/Java"); // linux / mac
File f3 = new File("c:/Java/test.txt"); // 파일명
File f4 = new File("c:/Java", "test.txt"); // 경로, 파일명
// 경로명 : 절대경로 / 상대경로(java에서 부터 상대적 위치)
// exist()
if(f3.exists()) {
System.out.println("존재");
} else {
System.out.println("미존재");
}
// f1.isDirectory() - 디렉토리를 물을 때
if(f1.isFile()) {
System.out.println("파일");
} else {
System.out.println("디렉토리");
}
File f5 = new File("c:/Java/test.txt");
if(f5.canWrite()) {
System.out.println("읽기쓰기");
} else {
System.out.println("읽기전용");
}
// 파일의 위치 정보
System.out.println(f5.getName());
System.out.println(f5.getParent());
System.out.println(f5.getPath());
System.out.println(f5.getAbsolutePath());
// surround try-catch block
try {
System.out.println(f5.getCanonicalPath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 파일 속성
// 크기 / 최종 수정일
long filesize = f5.length();
System.out.println(filesize);
// timestamp
long filedate = f5.lastModified();
System.out.println(filedate);
// 실제 시간을 확인
}
}
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileEx01 {
public static void main(String[] args) {
// File 생성
// 파일이나 디렉토리 경로를 통해서 생성
// 파일이나 디렉토리가 반드시 존재하지 않아도 객체 생성 가능하다
File f1 = new File("c:\\Java"); // windows
File f2 = new File("c:/Java"); // linux / mac
File f3 = new File("c:/Java/test.txt"); // 파일명
File f4 = new File("c:/Java", "test.txt"); // 경로, 파일명
// 경로명 : 절대경로 / 상대경로(java에서 부터 상대적 위치)
// exist()
if(f3.exists()) {
System.out.println("존재");
} else {
System.out.println("미존재");
}
// f1.isDirectory() - 디렉토리를 물을 때
if(f1.isFile()) {
System.out.println("파일");
} else {
System.out.println("디렉토리");
}
File f5 = new File("c:/Java/test.txt");
if(f5.canWrite()) {
System.out.println("읽기쓰기");
} else {
System.out.println("읽기전용");
}
// 파일의 위치 정보
System.out.println(f5.getName());
System.out.println(f5.getParent());
System.out.println(f5.getPath());
System.out.println(f5.getAbsolutePath());
// surround try-catch block
try {
System.out.println(f5.getCanonicalPath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 파일 속성
// 크기 / 최종 수정일
long filesize = f5.length();
System.out.println(filesize);
// timestamp
long filedate = f5.lastModified();
System.out.println(filedate);
// 실제 시간을 확인
Date date = new Date(filedate);
System.out.println(date.toLocaleString());
}
}
FileEx02 - 하드디스크 목록
import java.io.File;
public class FileEx02 {
public static void main(String[] args) {
// 특정디렉토리 내부의 디렉토리나 파일 목록
// list : String[]
// listFiles : File[]
File f = new File("c:/");
String[] lists = f.list();
for(String list : lists) {
System.out.println(list);
}
}
}
import java.io.File;
public class FileEx02 {
public static void main(String[] args) {
// 특정디렉토리 내부의 디렉토리나 파일 목록
// list : String[]
// listFiles : File[]
File f = new File("C:\\app\\kitcoop\\product\\12.1.0\\dbhome_1");
String[] lists = f.list();
for(String list : lists) {
System.out.println(list);
}
}
}
import java.io.File;
public class FileEx02 {
public static void main(String[] args) {
// 특정디렉토리 내부의 디렉토리나 파일 목록
// list : String[]
// listFiles : File[]
File f = new File("C:\\");
String[] lists = f.list();
/*
for(String list : lists) {
System.out.println(list);
}
*/
File[] listFiles = f.listFiles();
for(File listFile : listFiles ) {
System.out.println(listFile.getName());
}
}
}
FileEx03
import java.io.File;
public class FileEx03 {
public static void main(String[] args) {
// 파일/디렉토리 생성 / 삭제 / 이름 변경
File f = new File("c:/Java/test1");
if(f.mkdir()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
}
}
test.txt 생성 성공
기존에 이미 만들어져서 실패 출력
import java.io.File;
public class FileEx03 {
public static void main(String[] args) {
// 파일/디렉토리 생성 / 삭제 / 이름 변경
File f = new File("c:/Java/test1");
File f2 = new File("c:/Java/test2");
//if(f.mkdir()) {
if(f.renameTo(f2)) {
System.out.println("성공");
} else {
System.out.println("실패");
}
}
}
import java.io.File;
public class FileEx03 {
public static void main(String[] args) {
// 파일/디렉토리 생성 / 삭제 / 이름 변경
File f = new File("c:/Java/test1");
File f2 = new File("c:/Java/test2");
//if(f.mkdir()) {
//if(f.renameTo(f2)) {
if(f2.delete()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
}
}
import java.io.File;
import java.io.IOException;
public class FileEx03 {
public static void main(String[] args) {
// 파일/디렉토리 생성 / 삭제 / 이름 변경
File f = new File("c:/Java/test1");
File f2 = new File("c:/Java/test2");
//if(f.mkdir()) {
//if(f.renameTo(f2)) {
if(f2.delete()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
File file = new File("c:/Java/test1.txt");
try {
if(file.createNewFile()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if에서 else까지 블록 설정후 Try/catch Block을 하면 쉽게 만들 수 있다
import java.io.File;
import java.io.IOException;
public class FileEx03 {
public static void main(String[] args) {
// 파일/디렉토리 생성 / 삭제 / 이름 변경
File f = new File("c:/Java/test1");
File f2 = new File("c:/Java/test2");
//if(f.mkdir()) {
//if(f.renameTo(f2)) {
/*
if(f2.delete()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
*/
File file = new File("c:/Java/test1.txt");
File file2 = new File("c:/Java/test2.txt");
/*
try {
if(file.createNewFile()) {
System.out.println("성공");
} else {
System.out.println("실패");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
if(file.renameTo(file2)) {
System.out.println("성공");
} else {
System.out.println("실패");
}
}
}
FileEx04 - 현재 디렉토리에 속한 파일과 디렉토리의 이름과 크기 등 상세정보를 보여 주는 예제다
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileEx04 {
public static void main(String[] args) {
String currDir = System.getProperty("user.dir");
File dir = new File(currDir);
File[] files = dir.listFiles();
for(int i=0; i < files.length; i++) {
File f = files[i];
String name = f.getName();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mma");
String attribute = "";
String size = "";
if(files[i].isDirectory()) {
attribute = "DIR";
} else {
size = f.length() + "";
attribute = f.canRead() ? "R" : " ";
attribute = f.canWrite() ? "W" : " ";
attribute = f.isHidden() ? "H" : " ";
}
System.out.printf("%s %3s %6s %s\n"
, df.format(new Date(f.lastModified())), attribute, size, name);
}
}
}
FileSplit - 파일 분할 하는 것
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileSplit {
public static void main(String[] args) {
if(args.length < 2) {
System.out.println("USAGE : java FileSplit filename SIZE_KB");
System.exit(0);
}
final int VOLUME = Integer.parseInt(args[1]) * 1000;
try {
String filename = args[0];
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = null;
BufferedOutputStream bos = null;
int data = 0;
int i = 0;
int number = 0;
while((data = bis.read()) != -1) {
if(i%VOLUME == 0) {
if (i != 0) {
bos.close();
}
fos = new FileOutputStream(filename + "_." + ++number);
bos = new BufferedOutputStream(fos);
}
bos.write(data);
i++;
}
bis.close();
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileMerge
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileMerge {
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("USAGE : java FileSplit filename SIZE_KB");
System.exit(0);
}
String mergeFilename = args[0];
try {
File tempFile = File.createTempFile("~mergetemp", ".tmp");
tempFile.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tempFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
BufferedInputStream bis = null;
int number = 1;
File f = new File(mergeFilename + "_." + number);
while(f.exists()) {
f.setReadOnly();
bis = new BufferedInputStream(new FileInputStream(f));
int data = 0;
while((data = bis.read()) != -1) {
bos.write(data);
}
bis.close();
f = new File(mergeFilename + "_." + ++number);
}
bos.close();
File oldFile = new File(mergeFilename);
if(oldFile.exists()) {
oldFile.delete();
}
tempFile.renameTo(oldFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
File구조등을 직접 개발하려면 무지 힘들다. API를 적극 활용한다.
자바에서의 입출력
I/O란 Input과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고 받는 것을 말한다.
스트림 - File, Network에 쓰인다
스트림이란 데이터를 운반하는데 사용되는 연결통로이다.
스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 그래서 입력스트림과 출력스트림 모두 2개의 스트림이 필요하다.
스트림은 큐(queue)와 같이 FIFO 구조이다.
바이트기반 스트림 - InputStream, OutputStream 1바이트씩
아스키기반의 데이터를 주로 처리(영문)
문자기반 스트림 - Reader, Writer 2바이트씩
바이트기반 외 일본어, 한국어 등 문자기반 데이터를 주로 처리
이거롤 저장 안되니 vscode에서 utf-8로 저장해줄 것!
InputStreamEx01
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class InputStreamEx01 {
public static void main(String[] args) {
// 파일 읽어서 프로그램에 (입력)
FileInputStream fis = null;
try {
// file open
fis = new FileInputStream("c:/Java/test.txt");
// byte - int
int data = 0;
data = fis.read();
//System.out.println(data);
System.out.println((char)data);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// file close
if(fis != null) try {fis.close();} catch(IOException e) {};
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class InputStreamEx01 {
public static void main(String[] args) {
// 파일 읽어서 프로그램에 (입력)
FileInputStream fis = null;
try {
// file open
fis = new FileInputStream("c:/Java/test.txt");
// byte - int
int data = 0;
// 첫번째 글자
data = fis.read();
//System.out.println(data);
System.out.println((char)data);
// 두번째 글자
data = fis.read();
System.out.println((char)data);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// file close
if(fis != null) try {fis.close();} catch(IOException e) {};
}
}
}
InputStreamEx02
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class InputStreamEx2 {
public static void main(String[] args) {
// 파일 읽어서 프로그램에 (입력)
FileInputStream fis = null;
try {
// file open
fis = new FileInputStream("c:/Java/test.txt");
int data = 0;
while((data = fis.read()) != -1) {
// 엔터키도 문자
// unix - \n
// window - \r\n
//System.out.println((char)data);
System.out.print((char)data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// file close
if(fis != null) try {fis.close();} catch(IOException e) {};
}
}
}
공백은 엔터로써 엔터도 문자이다
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class InputStreamEx2 {
public static void main(String[] args) {
// 파일 읽어서 프로그램에 (입력)
FileInputStream fis = null;
try {
// file open
fis = new FileInputStream("c:/Java/test.txt");
int data = 0;
while((data = fis.read()) != -1) {
// 엔터키도 문자
// unix - \n
// window - \r\n
if(data == '\r') {
System.out.println("(r)");
} else if (data == '\n') {
System.out.println("(n)");
} else {
System.out.println((char)data);
}
//System.out.println((char)data);
//System.out.print((char)data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// file close
if(fis != null) try {fis.close();} catch(IOException e) {};
}
}
}
OutputStreamEx01
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamEx01 {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
// create or open
fos = new FileOutputStream("c:/Java/newtest.txt");
System.out.println("성공");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if(fos != null)
try {fos.close();} catch (IOException e) {};
}
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamEx01 {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
// create or open
fos = new FileOutputStream("c:/Java/newtest.txt");
fos.write('1');
fos.write('2');
System.out.println("성공");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null)
try {fos.close();} catch (IOException e) {};
}
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamEx01 {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
// create or open
fos = new FileOutputStream("c:/Java/newtest.txt");
fos.write('1');
fos.write('2');
fos.write('\r');
fos.write('\n');
// ascii code로 49=1, 50=2, 51=3
fos.write(49);
fos.write(50);
fos.write(51);
System.out.println("성공");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null)
try {fos.close();} catch (IOException e) {};
}
}
}
OutputStreamEx02
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamEx02 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("c:/Java/Koala.jpg");
fos = new FileOutputStream("c:/Java/newKoala.jpg");
int data = 0;
while((data = fis.read()) != -1) {
fos.write(data);
}
System.out.println("복사가 완료되었습니다");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fis != null) fis.close();
if(fos != null) fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
사진, 오디오, 파일 등 다 복사 할 수 있다
보조 스트림
스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다. 그래서 보조스트림만으로는 입출력을 처리할 수 없고, 스트림을 먼저 생성한 다음에 이를 이용해서 보조스트림을 생성해야한다.
BufferedInputStreamEx01
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class BufferedInputStreamEx01 {
public static void main(String[] args) {
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream("c:/Java/test.txt");
bis = new BufferedInputStream(fis);
int data = 0;
while((data = bis.read()) != -1) {
System.out.println((char)data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis != null) try {bis.close();} catch(IOException e) {};
if(fis != null) try {fis.close();} catch(IOException e) {};
}
}
}
BufferedOutputStreamEx01
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedOutputStreamEx01 {
public static void main(String[] args) {
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new FileOutputStream("c:/Java/newtest.txt"));
bos.write('a');
bos.write('b');
bos.write('c');
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bos != null) try {bos.close();} catch(IOException e) {};
}
}
}
OutputStreamEx02 - 보조 스트림 사용 한 것
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamEx02 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//fis = new FileInputStream("c:/Java/Koala.jpg");
//fos = new FileOutputStream("c:/Java/newKoala.jpg");
bis = new BufferedInputStream(new FileInputStream("c:/Java/Koala.jpg"));
bos = new BufferedOutputStream(new FileOutputStream("c:/Java/newKoala.jpg"));
int data = 0;
while((data = bis.read()) != -1) {
bos.write(data);
}
System.out.println("복사가 완료되었습니다");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bis != null) bis.close();
if(bos != null) bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
훨씬 속도가 빨라졌다.
FileReaderEx01
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderEx01 {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("c:/Java/test.txt");
int data = 0;
while((data = fr.read()) != -1) {
System.out.println((char)data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2 byte라서 한글이 안깨지고 정상 출력이 된다
FileWriterEx01
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterEx01 {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("c:/Java/newtest.txt");
fw.write("Hello");
fw.write(" java");
fw.write("\r\n");
fw.write("헬로우");
System.out.println("출력완료");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
java Gugudan
시작단수 : 1단
끝단수 : 3단
*파일명 : 1-1.txt
화면이 아닌 gugudan.txt 문서에 저장
1 X 1 = 1 1 X 2 = 2 1 X 3 = 3 ...
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class gugudan {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String begindan = "";
String enddan = "";
String guguname = "";
File f = null;
FileWriter fw = null;
try {
System.out.println("구구단 파일명 : ");
guguname = scan.nextLine();
f = new File(guguname);
//String msgguguname = new String("c:/Java/")+guguname+".txt";
fw = new FileWriter("c:/Java/" + guguname + ".txt");
f.createNewFile();
System.out.println("시작단수 입력 : ");
begindan = scan.nextLine();
System.out.println("끝단수 입력 : ");
enddan = scan.nextLine();
if(!begindan.equals("끝")) {
int i = Integer.parseInt(begindan);
//fw = new FileWriter("c:/Java/gugudan.txt");
//fw = new FileWriter(msgguguname);
for(int j = 1; j<=Integer.parseInt(enddan); j++) {
fw.write(i + "x" + j + "=" + i*j);
fw.write("\r\n");
}
System.out.println("생성완료");
} else {
System.out.println("종료");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
BufferedReaderEx01
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderEx01 {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("c:/Java/test.txt"));
/*
int data = 0;
while((data = br.read()) != -1) {
System.out.println((char)data);
}
*/
// br.readLine() - 엔터키까지
String data = null;
while((data = br.readLine()) != null) {
System.out.println(data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
BufferedWriterEx01
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterEx01 {
public static void main(String[] args) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("c:/Java/newtest.txt"));
bw.write("Hello");
bw.write("안녕");
System.out.println("출력완료");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
ZipCodeSearchEx01 - 배열 사용
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ZipCodeSearchEx01 {
public static void main(String[] args) {
BufferedReader br = null; // 입력 받기
BufferedReader br2 = null; // csv 파일 입력
try {
// csv 데이터 파일
br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("동이름을 입력하시오(동포함) : ");
br2 = new BufferedReader(new FileReader("C:/Java/zipcode_seoul_utf8_type2.csv"));
String data = br.readLine();
while(data.length() < 2) {
System.out.print("입력 값을 2자리 이상으로 해주세요(동포함) : ");
data = br.readLine(); //동 입력받기(data)
}
String postData = null;
while((postData = br2.readLine()) != null) { //csv에서 받아온 파일을 배열에 저장
for(int i=1; i<8; i++) {
String dongs[] = postData.split(",");
if(i == 4) {
if(dongs[3].equals(data)) { // 분리된 동(4번재)와 입력받은 값을 비교
System.out.println(postData);
}
}
}
}
System.out.println("입력한 주소 : " + data);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) try {br.close();} catch(IOException e) {};
if(br2 != null) try {br2.close();} catch(IOException e) {};
}
}
}
ZipcodeSearch - 강사님이 짰고, sentence.contains 사용
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class ZipcodeSearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
while(true) {
System.out.print("동이름을 입력하세요. 입력을 마치려면 q를 입력하세요 : ");
String msg = scan.nextLine();
if(msg.equals("q")) {
System.out.println("프로그램 종료");
break;
}
FileReader fr = null;
try {
fr = new FileReader("c:/java/zipcode_seoul_utf8_type2.csv");
int data = 0;
String sentence = "";
while((data = fr.read()) != -1) {
if(data == '\r' || data == '\n') {
if(data == '\n') {
if(sentence.contains(msg)) {
System.out.println("line : " + sentence);
}
sentence = "";
}
} else {
sentence += (char)data;
}
}
System.out.println();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(fr != null) try { fr.close(); } catch(IOException e) {}
}
}
scan.close();
}
}
ZipcodeSearch2 - 강사님이 짠거 2
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class ZipcodeSearch2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true) {
System.out.print("동이름을 입력하세요. 입력을 마치려면 q를 입력하세요 : ");
String msg = scan.nextLine();
if(msg.equals("q")) {
System.out.println("프로그램 종료");
break;
}
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("C:/Java/zipcode_seoul_utf8_type2.csv"));
String sentence = null;
while((sentence = br.readLine()) != null) {
String[] addresses = sentence.split(",");
//System.out.println(addresses[3]);
if(addresses[3].contains(msg)) {
System.out.println(sentence);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {try {br.close();} catch (IOException e) {e.printStackTrace();}}
}
}
scan.close();
}
}
ZipcodeSearch3 - 강사님이 짠거 - 검색한 결과를 파일로 저장, 한글 입력 조건, 2자리수 이상
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class ZipcodeSearch3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true) {
System.out.print("동이름을 입력하세요. 입력을 마치려면 q를 입력하세요 : ");
String msg = scan.nextLine();
if(msg.equals("q")) {
System.out.println("프로그램 종료");
break;
}
else if(msg.length() < 2) {
System.out.println("2자 이상으로 입력하셔야 합니다.");
continue;
}
// 조건 한글이 아니면 에러
else if(!msg.matches(".*[ㄱ-ㅎㅏ-ㅣ가-힣]+.*")) {
System.out.println("한글로 입력해 주시기 바랍니다");
} else {
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("C:/Java/zipcode_seoul_utf8_type2.csv"));
bw = new BufferedWriter(new FileWriter("C:/Java/" + msg + ".txt"));
String sentence = null;
while((sentence = br.readLine()) != null) {
String[] addresses = sentence.split(",");
//System.out.println(addresses[3]);
if(addresses[3].contains(msg)) {
//System.out.println(sentence);
bw.write(sentence + "\r\n");
}
}
System.out.println("출력이 완료되었습니다.");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {try {br.close();} catch (IOException e) {e.printStackTrace();}}
if(bw != null) {try {bw.close();} catch (IOException e) {e.printStackTrace();}}
}
}
}
scan.close();
}
}
댓글