실행환경 | |
Desktop | 조립식 |
CPU |
Intel(R) Core(TM) i7-3770 3.50GHz |
Memory | 4 GB |
OS | Window 7 Professional 32bit |
Java | 1.7.0_51 |
WebServer | Apache Tomcat 7.0 |
DB | MySQL 5.6.15 |
직렬화하지 않은 파일 읽기, 쓰기 - API : FileReader, BufferedReader, FileWriter, BufferedWriter |
읽기, 쓰기작업을 처리하는 FileReader, FileWriter에 효율을 향상시켜주는 BufferedReader, BufferedWriter 클래스를 연쇄시켜 사용한다. 버퍼는 자신이 가득 찰 때까지 기다리다가 꽉찬 후에 작업이 진행한다.
쓰는 방법(출력)
BufferedWriter w = new BufferedWriter(new FileWriter(new File("FileTest.txt"))); |
버퍼가 가득차기전에 데이터를 보내고자 한다면 writer.flush() 호출한다.
읽는 방법(입력)
읽기작업은 while()문에서 한번에 한 행씩 읽어오며, readLine()에서 null을 리턴하면 반복문을 종료한다.
가장 흔하게 쓰이는 방법
import java.io.*; public class FileTest { public static void main(String[] args) { String fDir = "TestDir/"; String fName1 = "FileTest.txt"; File f; try { // File 객체 생성(존재하는 파일) f = new File(fDir + fName1); // 파일 쓰기(주석부분은 간략화) FileWriter fileWriter = new FileWriter(f); BufferedWriter writer = new BufferedWriter(fileWriter); //BufferedWriter writer = new BufferedWriter(new FileWriter(f)); writer.write("witerTest1"); writer.append("\n"); // 개행문자 삽입 writer.append("witerTest2"); writer.newLine(); // 개행 메서드 writer.write("witerTest3"); writer.close(); // 파일 닫기 // 파일 읽기 FileReader fileReader = new FileReader(f); BufferedReader reader = new BufferedReader(fileReader); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); // 파일 닫기 } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
직렬화된 객체의 파일 입출력 - API : ObjectOutputStream, ObjectInputStream, FileOutputStream, FileInputStream |
사진. 구글 검색(Head First Java)
직렬화할 객체
Serializable 인터페이스를 꼭 구현해야한다.
class TestSerialization implements Serializable { private int x; private String str; TestSerialization(int a) { this.x = a; } TestSerialization(String s) { this.str = s; } int getA() { return x; } String getS() { return str; } }
파일 저장하기(출력)
public class FileTest { public static void main(String[] args) { String fDir = "TestDir/"; String fName = "FileTest.ser"; FileOutputStream fileStream; ObjectOutputStream objStream = null; // 저장할 객체 TestSerialization test1 = new TestSerialization("ObjectTest1"); TestSerialization test2 = new TestSerialization(100); TestSerialization test3 = new TestSerialization("ObjectTest3"); try { // 파일에 연결하기위해 생성, 파일명의 파일이 없으면 새로 만들어줌. fileStream = new FileOutputStream(fDir + fName); objStream = new ObjectOutputStream(fileStream); // 출력되는 객체는 반드시 Serialization 인터페이스 구현 objStream.writeObject(test1); objStream.writeObject(test2); objStream.writeObject(test3); System.out.println("end"); } catch (Exception ex) { System.err.println("Exception : " + ex.getMessage()); } finally { try { objStream.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } }
파일 불러오기(입력) : 역직렬화(객체 복구)
public class FileTest { public static void main(String[] args) { String fDir = "TestDir/"; String fName = "FileTest.ser"; FileInputStream fileStream; ObjectInputStream objStream = null; try { // 역직렬화할 파일을 불러온다. fileStream = new FileInputStream(fDir + fName); objStream = new ObjectInputStream(fileStream); // 처음에 저장된 순서대로 가져온다. Object one = objStream.readObject(); Object two = objStream.readObject(); Object three = objStream.readObject(); // 역직렬화할 객체 TestSerialization test1 = (TestSerialization) one; TestSerialization test2 = (TestSerialization) two; TestSerialization test3 = (TestSerialization) three; } catch (Exception ex) { System.err.println("Exception : " + ex.getMessage()); } finally { try { objStream.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } }
'대학 생활 > JAVA' 카테고리의 다른 글
[JAVA] (조금 더 정확한)실행시간 확인, 측정하기(timer) (0) | 2014.05.02 |
---|---|
[JAVA] 연산자 우선순위 (0) | 2014.05.02 |
[JAVA] java.io.File 클래스 (0) | 2014.04.10 |
[JAVA]정적필드, 정적메소드 (0) | 2014.03.18 |