티스토리 뷰

[Java] 문자열(String)을 파일로 저장하기


1. BufferedWriter

시작은 간단하게 BufferedWriter 클래스를 이용해서 문자열을 새 파일에 저장해 보겠습니다.
@Test
public void whenWriteStringUsingBufferedWritter_thenCorrect() throws IOException {
    String str = "Hello";
    BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
    writer.write(str);
     
    writer.close();
}


2. PrintWriter

다음은 PrintWriter 클래스를 이용한 형식화된 문자를 파일로 저장하는 방법입니다.
@Test
public void givenWritingStringToFile_whenUsingPrintWriter_thenCorrect() 
  throws IOException {
    FileWriter fileWriter = new FileWriter(fileName);
    PrintWriter printWriter = new PrintWriter(fileWriter);
    printWriter.print("Some String");
    printWriter.printf("Product name is %s and its price is %d $", "iPhone", 1000);
    printWriter.close();
}

저장된 파일은 이렇게 나올겁니다.

Some String
Product name is iPhone and its price is 1000$


3. FileOutputStream

이번에는 FileOutputStream 클래스를 이용해서 binary data를 파일로 저장해보겠습니다.
아래 코드는 문자열을 byte 형태로 변환하고 이 byte 값을 FileOutputStream 클래스를 이용해서 파일에 저장해보겠습니다.
@Test
public void givenWritingStringToFile_whenUsingFileOutputStream_thenCorrect() 
  throws IOException {
    String str = "Hello";
    FileOutputStream outputStream = new FileOutputStream(fileName);
    byte[] strToBytes = str.getBytes();
    outputStream.write(strToBytes);
 
    outputStream.close();
}

파일을 열어보면 당연히 이렇게 나올겁니다.

Hello


4. DataOutputStream

다음은 DataOutputStream 클래스를 사용해서 문자열을 파일로 저장하는 방법을 살펴봅시다.
@Test
public void givenWritingToFile_whenUsingDataOutputStream_thenCorrect() 
  throws IOException {
    String value = "Hello";
    FileOutputStream fos = new FileOutputStream(fileName);
    DataOutputStream outStream = new DataOutputStream(new BufferedOutputStream(fos));
    outStream.writeUTF(value);
    outStream.close();
 
    // verify the results
    String result;
    FileInputStream fis = new FileInputStream(fileName);
    DataInputStream reader = new DataInputStream(fis);
    result = reader.readUTF();
    reader.close();
 
    assertEquals(value, result);
}


5. RandomAccessFile

이번에는 완전히 새 파일에 그냥 쓰는게 아니라 기존에 있는 파일에 쓰고 수정하거나 거기에 추가하는 방법을 보여드리겠습니다.
간단히 말해서 임의의 위치에 접근할 수 있어야합니다.

RandomAccessFile 클래스는 파일에 byte값으로 특정 위치를 지정해 내용을 쓸수있게 해줍니다.
아래 코드에서 파일의 특정위치를 지정하여 정수값을 추가했습니다.
private void writeToPosition(String filename, int data, long position) 
  throws IOException {
    RandomAccessFile writer = new RandomAccessFile(filename, "rw");
    writer.seek(position);
    writer.writeInt(data);
    writer.close();
}
만약 파일의 특정위치에 정수값을 읽어들이고 싶다면 이렇게하면 됩니다.
private int readFromPosition(String filename, long position) 
  throws IOException {
    int result = 0;
    RandomAccessFile reader = new RandomAccessFile(filename, "r");
    reader.seek(position);
    result = reader.readInt();
    reader.close();
    return result;
}
위에서 작성한 함수를 확인해보기 위해서 정수값을 쓰고, 수정하고, 마지막으로 그 값을 다시 읽어들여봅시다.
@Test
public void whenWritingToSpecificPositionInFile_thenCorrect() 
  throws IOException {
    int data1 = 2014;
    int data2 = 1500;
     
    writeToPosition(fileName, data1, 4);
    assertEquals(data1, readFromPosition(fileName, 4));
     
    writeToPosition(fileName2, data2, 4);
    assertEquals(data2, readFromPosition(fileName, 4));
}


[출처] https://www.baeldung.com/java-write-to-file


도움이 되셨다면 공감이나 좋아요 부탁드립니다~♡

광고를 클릭해주시면 더욱 감사하구요~♡v♡/

혹시 더 궁금하신 점이나 부족한 부분, 잘못된 내용이 있다면 댓글 부탁드립니다~~



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함