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
'IT이야기' 카테고리의 다른 글
TypeScript 해시 맵 / 사전 인터페이스 (0) | 2021.04.04 |
---|---|
\ bin \ roslyn \ VBCSCompiler.exe를 삭제할 수 없습니다. 액세스가 거부되었습니다. (0) | 2021.04.04 |
SQL Server에 연결하는 동안 네트워크 관련 또는 인스턴스 관련 오류가 발생한 이유 (0) | 2021.04.03 |
ASP.NET Eval () 및 Bind () 이해 (0) | 2021.04.03 |
JavaEE에서 'Facet'이란 (0) | 2021.04.03 |