2012-03-05 1 views
1

저는 현재 학교 프로젝트를 진행하고 있습니다. Java 기반이며 Linux Mint에서 이클립스를 사용하고 있습니다. 할당에는 파일 이름 배열을 만들 때 String[] filenames = new java.io.File("icons).list(); 문을 사용한다고 나와 있습니다.파일 디렉토리가 포함 된 String 배열을 만드는 방법은 무엇입니까?

문제는 무엇을 해야할지 잘 모르겠다. 지난 몇 시간 동안 인터넷과 교재를 검색했지만 아무 소용이 없었다. 별도의 방법이 필요합니까?

다음은 모델에서 필요한 코드에 대한 내 추측입니다 (이 프로젝트는 GUI와 일치하는 게임을 만드는 것입니다). 나중에 실제 아이콘으로 이름을 변환해야하지만, 알아 낸 부분, 배열로 파일을 가져올 수 없습니다! 사전에

감사합니다,

public String[] list() { 
    String[] fileNames = new java.io.File("icons").list(); 
    return fileNames; 
} 
+1

아이콘이있는 인용 부호 안에 디렉토리 경로를 넣으십시오. –

+1

나는 당신의 질문이 무엇인지 모르겠습니다. 게시 한 코드는 "icons"디렉토리의 모든 파일 이름을 배열로 반환합니다."개별 파일의 내용을 어떻게 읽습니까?"라는 질문이 있습니다. – jacobm

+0

다시 질문이 무엇입니까? –

답변

1

Java에서 File 클래스는 파일 시스템의 "기존"파일을 나타내지 않아도됩니다. 예 :

File f = new File("some_unknown_unexisting_file.bob"); 
System.out.println(f.exists()); // most likely will print 'false' 

또한 클래스는 파일을 현재 작업 디렉토리에서 확인합니다. 할 수 있다면 당신은 내가 가진 File[] 배열을 점점 제안, 귀하의 경우에는

System.out.println(new File(".").getAbsolutePath()); 

이 디렉토리를 얻을 수 있습니다 : 폴더가 아닌 File 객체의 배열을 반환합니다

File[] files = new File("icons").listFiles(new FileFilter() { 
    @Override 
    public boolean accept(File f) { 
     return !f.isDirectory() && f.canRead(); 
    } 
}); 
for (File f : files) { 
    System.out.println(f.getAbsolutePath()); 
} 

및 당신은 독서를 위해 열 수 있습니다 (이것은 항상 사실이 아니지만 귀하의 경우에는 괜찮습니다).

하지만 list()를 사용하는이 경우, 다음이 동일합니다 : 당신이 사용하는 아이콘을 만들 수있는 파일 (String[]을)의 목록과 함께,

File parent = new File("icons"); 
String[] fileStr = parent.list(new FilenameFilter() { 
    @Override 
    public boolean accept(File dir, String name) { 
     File f = new File(dir, name); 
     return !f.isDirectory() && f.canRead(); 
    } 
}); 
for (String f : fileStr) { 
    System.out.println(new File(parent, f).getAbsolutePath()); 
} 

또한 :

String filename = fileStr[i]; // some file name within the array 
ImageIcon icon = new ImageIcon("icons" + File.separator + filename); 

또는 귀하의 파일 목록 (File[])을 가지고 있다면, 그것은 더 깨끗합니다 :

File file = files[i]; // some file within the File[] array 
ImageIcon icon = new ImageIcon(file.getAbsolutePath()); 

행운을 비네.

+0

이것은 파일이 무엇인지를 이해하는데 도움이됩니다. 기본적으로 경로가 포함 된 String에 대한 참조입니까? 그런 다음 버튼 하나에 실제로 아이콘을 표시한다고 가정합니다. 새로운 ImageIcon을 만들어야합니다. 그러나 실제로 파일 이름을 읽는 방법에 대해서는 아직 명확하지 않지만 getAbsolutePath는 "/ home/daniel/workspace/Assignment3 /"디렉토리에 있지만 Linux에서이 파일을 실행하고 있습니다. Windows가 JCreator를 실행할 가능성이 가장 높습니다. – DanBMan

+0

+1 또한'FilenameFilter', ['FileFilter'] (http://docs.oracle.com/javase/7/docs/api/java/io/FileFilter.html)를 참조하십시오. –

+0

Eclipse를 사용하는 경우 기본 경로는 Eclipse의 프로젝트 경로이므로 사용되는 OS에 관계없이 기본 플랫폼 독립적 동작이므로 문제가 발생하지 않습니다. 'File' 객체는 경로 이름에 대한 참조 일뿐만 아니라 경로에 대한 정보를 얻는 유틸리티와 같습니다. 새로운'File'을 생성하는 것은 어떤 것도 생성하거나 열지는 않지만 주어진 경로 이름을 사용하여 수행 할 수있는 "연산"을 제공합니다. 'JButton'은'Icon'을 취할 수있는 생성자를 가지고 있습니다. 그렇습니다. 새로운 ImageIcon을 만들고 이것을'JButton' 생성자에 넘깁니다. –

0

은 당신이 쓴 코드는 괜찮아 보인다. Java가 찾고있는 "아이콘"폴더가 존재합니까?

이 시도 :

File f = new File("icons"); 
System.out.println("Does icons exist?" + f.exists()); 
System.out.println("Is it a dir?" + f.isDirectory()); 
System.out.println("How many files does it contain?" + f.list().length); 

행운을 빕니다!

0

동일한 문제가있었습니다. 아이콘 폴더를 src 폴더 바로 앞에있는 폴더로 옮기려고하면 제대로 작동하는 것 같습니다. 내가 JCreator에서 작동하는 것처럼, 과제를 제출할 때 내가 무엇을 할 것인지 확신 할 수 없다. 나는 그것이 .java 파일들과 함께 있어야한다고 생각한다.

관련 문제