Programming Language/Java
[Java] 문자열(String)을 파일로 저장하기
HoZang
2019. 3. 7. 10:56
[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♡/
혹시 더 궁금하신 점이나 부족한 부분, 잘못된 내용이 있다면 댓글 부탁드립니다~~