티스토리 뷰
[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
- Linux
- 자바
- Entity Framework Core
- CentOS
- php
- Spring
- egoverment
- Java
- MariaDB
- express
- dotnet core
- Windows
- DART
- MySQL
- ubuntu
- asp.net core
- 스프링
- high1
- Fedora
- eGovFrame
- egov
- 전자정부
- jQuery
- Flutter
- JSP
- 하이원
- .NET Core
- c#
- Eclipse
- 이클립스
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함