반응형

[Java 실습 #11] 파일 입출력(IO) - 파일 경로찾기 getAbsolutePath 활용 (2) - jar 파일 배포 후 외부 텍스트 파일 읽기

 

 

1. jar 파일 배포 후 외부 텍스트 파일 읽기

2. 개발환경

3. 구현

    3.1. 프로젝트 구조

    3.2. 텍스트 파일 - csv 형태

    3.3. 구현 - 소스코드

    3.4. 배포 후 텍스트 파일 위치 지정

4. 결과 화면 - 배포 후 실행

 

 

1. jar 파일 배포 후 외부 텍스트 파일 읽기

jar 파일 배포

[인텔리제이 (IntelliJ) #1] JAR 파일 배포 방법

 

[인텔리제이 (IntelliJ) #1] JAR 파일 배포 방법

[인텔리제이 (IntelliJ) #1] JAR 파일 배포 방법 1. File > Project Structure > Artifacts > + 2. Add > JAR > From modules with dependencies... 3. Create JAR from Modules > Module 지정 > Main Clas..

tlo-developer.tistory.com

 

 

2. 개발환경

MacOS M1 - macOS Monterey 12.0.1

JDK 1.8

IntelliJ IDEA 2021.2 (Community Edition)

 

 

3. 구현

 

3.1. 프로젝트 구조

META-INF > MANIFEST 생성 확인

 

MANIFEST 관련

[Java 기초 #4] JAR Manifest file 기본

 

[Java 기초 #4] JAR Manifest file 기본

JAR의 Manifest file 활용 Manifest 파일 활용 : 기초 JAR 파일은 내부의 manifest 파일을 활용하여 다양한 기능을 지원 (ex. 전자서명, 버전관리, 패키징 등) manifest 파일은 JAR 파일에 패키징된 파일들에 대한

tlo-developer.tistory.com

 

 

3.2. 텍스트 파일 - csv 형태

[ sample-data.txt ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ID, FIRST NAME, LAST NAME, AGE, GENDER, EMAIL, SALARY
=====================================================
1001 , Michael , Jordan, 23, M, michael@tester.com , 30_000_000
1002 , Michelle , Jordan, 24, F, michelle@tester.com , 31_000_000
1003 , Adrian , Grey , 25, M , adrian@tester.com , 32_000_000
1004 , Adriana , Grey , 26, F , adriana@tester.com , 33_000_000
1005 , Harry , Potz , 27 , M , harry@tester.com , 34_000_000
1006 , Harriot , Potz , 28 , F , harriot@tester.com , 35_000_000
1007 , Mary , Granger , 29, F , mary@tester.com , , 36_000_000
1008 , Susan , Little , 53 , F , susan@tester.com , 37_000_000
1009 , Peter , Johnson , 30 , M , peter@tester.com , 38_000_000
1010 , Maria , Storm , 31 , F , maria@tester.com , 39_000_000
1011 , Helen , Hays , 32 , F , helen@tester.com , 40_000_000
1012 , Zeus , Nolan , 33 , M , zeus@tester.com , 41_000_000
1013 , Hector , Wood , 34 , M , hector@tester.com , 42_OOO_000
1014 , Chris , Munteanu, 35 , M , chris@tester.com , 43_000_000
1014 , Boris , Jackson , 36 , M , boris@tester.com , 44_000_000
1015 , Boris , Johnson , 36 , M , boris@tester.com , 44_000_000
1016 , Jack , Hope , 37 , M , jack@tester.com , 45_000_000
1017 , Janet , Hope , 37 , M , janet@tester.com , 46_000_000

 

 

3.3. 구현 - 소스 코드

new File("").getAbsoluatePath() 활용

BufferedReader, FileReader 활용

[ App01.java ] 

  • 배포한 jar 파일 위치에 있는 resource 폴더 생성 후 sample-data.txt 복사
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
package io.home.test;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
 
public class App01 {
 
    private static final String BASE_PATH = new File("").getAbsolutePath();
    private static String RESOURCE_PATH = "/src/resource";
    private static String FILE_NAME = "/sample-data.txt";
    private static String FILE_PATH;
 
    public static void main(String[] args) {
 
        FILE_PATH = BASE_PATH + RESOURCE_PATH + FILE_NAME;
        if (Files.exists(Paths.get(FILE_PATH))) {
            System.out.println("Run in IDE!");
        } else {
            FILE_PATH = BASE_PATH + "/resource" + FILE_NAME;
            System.out.println("Run executable JAR!\n");
        }
 
        try (BufferedReader br = new BufferedReader(new FileReader(FILE_PATH))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException fnfe) {
            System.out.println("File Not Found!");
            fnfe.printStackTrace();
        } catch (IOException ioe) {
            System.out.println("Cannot Read File!");
            ioe.printStackTrace();
        }
    }
}
 

 

 

3.4. 배포 후 텍스트 파일 위치 지정

 

 

4. 결과 화면 - 배포 후 실행

 

1
java -jar file-io-read-line.jar

 

 

 

반응형