IT이야기

Eclipse 상대 파일 경로 작동

cyworld 2021. 4. 3. 10:54
반응형

Eclipse에서 상대 파일 경로는 어떻게 작동합니까?


그래서 2009 년 새해 결심은 Java를 배우는 것입니다. 저는 최근에 "Java for Dummies"를 구입했고 이클립스를 사용하여 다시 작성하여 책의 데모 코드를 따라 가고 있습니다. 어쨌든, 상대 경로를 사용하는 책의 모든 예제는 읽어야 할 .txt 파일을 읽지 않는 것 같습니다.

다음은 샘플 코드입니다.

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.GridLayout;

class TeamFrame extends JFrame {

    public TeamFrame() throws IOException {
        PlayerPlus player;
        Scanner myScanner = new Scanner(new File("Hankees.txt"));

        for (int num = 1; num <= 9; num++) {
            player = new PlayerPlus(myScanner.nextLine(), myScanner.nextDouble());
            myScanner.nextLine();
            addPlayerInfo(player);
        }      

        add(new JLabel());
        add(new JLabel("   ------"));
        add(new JLabel("Team Batting Aberage:"));
        add(new JLabel(PlayerPlus.findTeamAverageString()));
        setTitle("The Hankees");
        setLayout(new GridLayout(11,2));
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    void addPlayerInfo(PlayerPlus player) {
        add(new JLabel(player.getName()));
        add(new JLabel(player.getAverageString()));
    }
}

아래 스크린 샷에서 제가이 파일을 포함 시켰음을 알 수 있습니다.

더 이상 사용할 수없는 이미지

또한 응용 프로그램을 빌드 할 때 Hankees.txt의 복사본이 컴파일 된 .class 파일과 함께 bin 폴더에 있는지 확인했습니다.

마지막으로 12 행을 다음과 같이 변경하고 Hankees.txt를 내 C : \ 드라이브의 루트에 배치하면 프로그램이 정상적으로 컴파일되고 실행됩니다.

Scanner myScanner = new Scanner(new File("C:\\Hankees.txt"));

그래서 기본적으로 내 질문은 내가 뭘 잘못하고 있는가? 아니면 Eclipse가 어떤 방식 으로든 책임이 있습니까?

모든 도움에 감사드립니다!


당신은 필요합니다 "src/Hankees.txt"

파일이 작업 디렉토리로 계산되지 않는 소스 폴더에 있습니다. \

또는 파일을 프로젝트의 루트 디렉토리로 이동하고 "Hankees.txt"


프로젝트의 빌드 경로는 소스 폴더에서 출력 폴더에 복사되는 리소스를 정의합니다. 일반적으로 모든 파일 포함으로 설정됩니다.

새 실행 구성은 기본적으로 작업 디렉토리에 프로젝트 디렉토리를 사용하지만 변경 될 수도 있습니다.

이 코드는 작업 디렉토리와 클래스가로드 된 위치의 차이점을 보여줍니다.

public class TellMeMyWorkingDirectory {
    public static void main(String[] args) {
        System.out.println(new java.io.File("").getAbsolutePath());
        System.out.println(TellMeMyWorkingDirectory.class.getClassLoader().getResource("").getPath());
    }
}

출력은 다음과 같을 수 있습니다.

C:\your\project\directory
/C:/your/project/directory/bin/

이것은 다른 질문과 정말 유사합니다. Java 애플리케이션에 파일을 어떻게로드해야합니까?

내 파일을 Java 애플리케이션에로드하려면 어떻게해야합니까?

당신은 하지 않습니다 에 의해 파일을로드 할 :

C:\your\project\file.txt

이것은 나쁘다!

getResourceAsStream을 사용해야합니다.

InputStream inputStream = YourClass.class.getResourceAsStream(“file.txt”);

또한 File.separator 를 사용해야합니다 . 편의를 위해 문자열로 표시되는 시스템 종속 이름 구분 문자입니다.


예, Eclipse는 경로 목적으로 최상위 디렉토리를 작업 / 루트 디렉토리로 간주합니다.

... 추가 정보를 추가하겠다고 생각했습니다. 나는 신입이다! 도와 드리고 싶습니다.


http://java.sun.com/javase/6/docs/api/java/io/File.html 에서 패러 프레이징 :

아래의 클래스 java.io는 일반적으로 가상 컴퓨터가 시작된 디렉터리 인 현재 사용자 디렉터리에 대해 상대 경로 이름을 확인합니다.

Eclipse는 작업 디렉토리를 최상위 프로젝트 폴더로 설정합니다.


You can always get your runtime path by using:

 String path = new File(".").getCanonicalPath();

This provides valuable information about where to put files and resources.

ReferenceURL : https://stackoverflow.com/questions/437382/how-do-relative-file-paths-work-in-eclipse

반응형