2012-04-29 2 views
0

텍스트 파일을 사용하는 프로그램을 만들고 있습니다. jar 파일을 사용하여 다른 컴퓨터에서 프로그램을 실행할 수 있도록해야합니다. 문제는 텍스트 파일의 올바른 파일 경로를 찾을 수 없다는 것입니다. getResource()을 사용해 보았지만 아직 제대로 작동하지 않습니다. 코드는 다음과 같습니다.Netbeans 프로젝트에서 파일 경로를 가져 오는 데 문제가 있습니다.

public class Params { 

    public static void init() { 

     hsChartSuited = new int[13][13]; 

     file = new File(Params.class.getResource("HandStrengthDataSuited.txt").getFile()); 

     try { 
      Scanner input = new Scanner(file); 
      for (int i = 0; i < hsChartSuited.length; i++) { 
       for (int j = 0; j < hsChartSuited[i].length; j++) { 
        hsChartSuited[i][j] = Integer.parseInt(input.next()) - 20; 
       } 
      } 
     } catch (FileNotFoundException e) { 
      System.out.println("File not found"); 

     } 
} 

HandStrengthDataSuited.txt은 내 프로젝트의 src 폴더에있는 파일입니다. 또한 폴더 외부, 프로젝트의 기본 디렉토리에도 있습니다. 나는 절대 파일 경로를 인쇄 시도했습니다, 이것은 내가 무엇을 얻을 : 내가 얻을 필요가

/Users/MyUsername/file:/Users/MyUsername/Documents/Homework_Soph_2012/Computer%20Science/HoldEm/dist/HoldEm.jar!/holdem/HandStrengthDataSuited.txt 

파일 경로입니다

/Users/MyUsername/Documents/Homework_Soph_2012/Computer%20Science/HoldEm/holdem/HandStrengthDataSuited.txt 

사람이 문제가 여기에 무엇을 알고 있나요?

답변

0

파일은 src 폴더에있는 경우,

class Tools { 
    public static InputStream getResourceAsStream(String resource) 
     throws FileNotFoundException 
     { 
     String stripped = resource.startsWith("/") ? resource.substring(1) : resource; 
     InputStream stream = null; 
     ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
     if (classLoader != null) { 
      stream = classLoader.getResourceAsStream(stripped); 
     } 
     if (stream == null) { 
      stream = Tools.class.getResourceAsStream(resource); 
     } 
     if (stream == null) { 
      stream = Tools.class.getClassLoader().getResourceAsStream(stripped); 
     } 
     if (stream == null) { 
      throw new FileNotFoundException("Resource not found: " + resource); 
     } 
     return stream; 
    } 
} 

사용 :

reader = new BufferedReader(new InputStreamReader(getResourceAsStream("org/paulvargas/resources/file.txt"), "UTF-8")); 
+0

그래서, 나는'와'조직/paulvargas/자원/file.txt'을 대체 할 SRC/홀덤/HandStrengthDataSuited .txt' 그럼? – RaysonK

+0

'src '이 자바 패킷이 아니면'holdem/HandStrengthDataSuited.txt' 만 사용하십시오. –

관련 문제