티스토리 뷰
[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♡/
혹시 더 궁금하신 점이나 부족한 부분, 잘못된 내용이 있다면 댓글 부탁드립니다~~
'Programming Language > Java' 카테고리의 다른 글
[Java] unescape(decode) HTML Entities (0) | 2019.05.24 |
---|---|
[Java] void 형의 메서드를 종료하는 방법 (0) | 2019.03.07 |
[Java / Mybatis] 일괄(Batch) 입력/수정(Insert/Update) (0) | 2019.03.06 |
[Java] Date객체 문자열(String) 변환 (0) | 2019.03.05 |
[Java] 배열객체(String[]) List, ArrayList 변환 (0) | 2019.03.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- express
- 자바
- php
- jQuery
- Flutter
- 이클립스
- 스프링
- MySQL
- JSP
- asp.net core
- dotnet core
- CentOS
- 전자정부
- Spring
- Eclipse
- 하이원
- Fedora
- egov
- ubuntu
- DART
- Linux
- Windows
- MariaDB
- egoverment
- Java
- .NET Core
- eGovFrame
- high1
- Entity Framework Core
- c#
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함