Java에서 파일에서 데이터를 저장하고 로드하는 방법 – 파일 I/O 읽기-쓰기 작업을 위한 간단한 생산 준비 유틸리티
게시 됨: 2020-10-11
파일에 개체를 쓰고 다시 읽는 방법은 무엇입니까?
Java는 많은 API로 매우 훌륭하고 Java 8에서는 Lambda, 메서드 참조, 기본 메서드, 더 나은 유형 인터페이스, 반복 주석, 메서드 매개변수 반영 등과 같은 훨씬 더 많은 API를 완전히 사용할 수 있습니다.
언젠가 Java의 파일에서 JSON 객체를 읽는 방법에 대한 기사를 작성했습니다. 간단한 자바 읽기 작업이었습니다. 그러나 이 튜토리얼에서는 간단한 Production Ready Java 유틸리티를 사용하여 파일에서 데이터를 save and load
할 것입니다.

단순한 객체를 저장할 뿐만 아니라 CrunchifyCompany 유형의 간단한 Java POJO를 만들고 GSON
을 사용하여 객체를 저장하고 검색할 것입니다. 아래 프로그램을 실행하려면 아래 종속성이 필요합니다.
maven 프로젝트에 대한 종속성을 아래에 넣으십시오. Dynamic Web Project가 있고 Maven 프로젝트로 변환하려면 다음 단계를 따르십시오.
1 2 3 4 5 |
< dependency > < groupId > com . google . code . gson < / groupId > < artifactId > gson < / artifactId > < version > 2.3 < / version > < / dependency > |
다음은 흐름입니다.
-
CrunchifyReadWriteUtilityForFile.java
클래스 생성 - 두 개의 필드가 있는 개인 내부 클래스
CrunchifyCompany
만들기- 개인 int
employees
; - 개인 문자열
companyName
;
- 개인 int
- 메인 메소드 내에서 객체
crunchify
생성 - 개체를
Gson
으로 변환하여 파일에 저장합니다. -
crunchifyWriteToFile
메소드를 사용하여 Java의 파일에 데이터 저장 -
crunchifyReadFromFile
메소드를 사용하여 Java의 파일에서 데이터 검색
다음은 완전한 예입니다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
package crunchify . com . tutorial ; import com . google . gson . Gson ; import com . google . gson . stream . JsonReader ; import java . io . * ; import java . nio . charset . StandardCharsets ; /** * @author Crunchify.com * Best and simple Production ready utility to save/load * (read/write) data from/to file */ public class CrunchifyReadWriteUtilityForFile { private static final String crunchifyFileLocation = "/Users/appshah/Documents/crunchify.txt" ; private static final Gson gson = new Gson ( ) ; // CrunchifyComapny Class with two fields // - Employees // - CompanyName private static class CrunchifyCompany { private int employees ; private String companyName ; public int getEmployees ( ) { return employees ; } public void setEmployees ( int employees ) { this . employees = employees ; } public String getCompanyName ( ) { return companyName ; } public void setCompanyName ( String companyName ) { this . companyName = companyName ; } } // Main Method public static void main ( String [ ] args ) { CrunchifyCompany crunchify = new CrunchifyCompany ( ) ; crunchify . setCompanyName ( "Crunchify.com" ) ; crunchify . setEmployees ( 4 ) ; // Save data to file crunchifyWriteToFile ( gson . toJson ( crunchify ) ) ; // Retrieve data from file crunchifyReadFromFile ( ) ; } // Save to file Utility private static void crunchifyWriteToFile ( String myData ) { File crunchifyFile = new File ( crunchifyFileLocation ) ; // exists(): Tests whether the file or directory denoted by this abstract pathname exists. if ( ! crunchifyFile . exists ( ) ) { try { File directory = new File ( crunchifyFile . getParent ( ) ) ; if ( ! directory . exists ( ) ) { // mkdirs(): Creates the directory named by this abstract pathname, including any necessary but nonexistent parent directories. // Note that if this operation fails it may have succeeded in creating some of the necessary parent directories. directory . mkdirs ( ) ; } // createNewFile(): Atomically creates a new, empty file named by this abstract pathname if and only if a file with this name does not yet exist. // The check for the existence of the file and the creation of the file if it does not exist are a single operation // that is atomic with respect to all other filesystem activities that might affect the file. crunchifyFile . createNewFile ( ) ; } catch ( IOException e ) { crunchifyLog ( "Exception Occurred: " + e . toString ( ) ) ; } } try { // Convenience class for writing character files FileWriter crunchifyWriter ; crunchifyWriter = new FileWriter ( crunchifyFile . getAbsoluteFile ( ) , true ) ; // Writes text to a character-output stream BufferedWriter bufferWriter = new BufferedWriter ( crunchifyWriter ) ; bufferWriter . write ( myData . toString ( ) ) ; bufferWriter . close ( ) ; crunchifyLog ( "Company data saved at file location: " + crunchifyFileLocation + " Data: " + myData + "\n" ) ; } catch ( IOException e ) { crunchifyLog ( "Hmm.. Got an error while saving Company data to file " + e . toString ( ) ) ; } } // Read From File Utility public static void crunchifyReadFromFile ( ) { // File: An abstract representation of file and directory pathnames. // User interfaces and operating systems use system-dependent pathname strings to name files and directories. File crunchifyFile = new File ( crunchifyFileLocation ) ; if ( ! crunchifyFile . exists ( ) ) crunchifyLog ( "File doesn't exist" ) ; InputStreamReader isReader ; try { isReader = new InputStreamReader ( new FileInputStream ( crunchifyFile ) , StandardCharsets . UTF_8 ) ; JsonReader myReader = new JsonReader ( isReader ) ; CrunchifyCompany company = gson . fromJson ( myReader , CrunchifyCompany . class ) ; crunchifyLog ( "Company Name: " + company . getCompanyName ( ) ) ; int employee = company . getEmployees ( ) ; crunchifyLog ( "# of Employees: " + Integer . toString ( employee ) ) ; } catch ( Exception e ) { crunchifyLog ( "error load cache from file " + e . toString ( ) ) ; } crunchifyLog ( "\nCompany Data loaded successfully from file " + crunchifyFileLocation ) ; } private static void crunchifyLog ( String string ) { System . out . println ( string ) ; } } |
Eclipse 콘솔 출력:
1 2 3 4 5 6 |
Company data saved at file location : / Users / appshah / Documents / crunchify . txt Data : { "employees" : 4 , "companyName" : "Crunchify.com" } Company Name : Crunchify . com # of Employees: 4 Company Data loaded successfully from file / Users / appshah / Documents / crunchify . txt |
다음은 crunchify.txt 파일 내용입니다.
프로그램을 two times
실행했을 때 crunchify.txt
파일에 값을 추가할 때 JSONObject를 두 번 볼 수 있습니다.

