Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Анализ содержимого каталога. Запись в файл


Автор: ioManip 26.9.2014, 13:37
Привет! smile 

В каталоге к примеру есть: (Название каталога englishMusic)
Код

Admiral Nelson - Love Is Gone.mp3
Akcent - Faina.mp3
Arash Ft Helena - One Day.mp3
Basto - I Rave You - Give It To Me-.mp3


При записи содержимого в файл остается только это:
Код

englishMusic
 - Love Is Gone.mp3
Akcent - Faina.mp3
Arash Ft Helena - One Day.mp3
Basto - I Rave You - Give It To Me-.mp3


Не пойму почему съедает название?

Catalog.java - реализация взятия пути и чтения каталога и подкаталогов
Код

public class Catalog extends ConvertToXML {
    
    private String path;
    
    public String getPath() throws Exception {
        
        File file = new File("path.txt");
        
        BufferedReader in = new BufferedReader(new FileReader(file));
        
        while((path = in.readLine()) != null) {
            System.out.println("Path: " + path);
        }
        in.close();
        return path;
    }
    
    public void getContentCatalog(File dir) throws Exception {
         
        File[] files = dir.listFiles();
        
        PrintWriter out = new PrintWriter(new FileWriter("content.txt"));
       
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.println("Dir: " + file.getName());
                out.println(file.getName());
                getContentCatalog(file);
            }
            else {
                System.out.println("  File: " + file.getName());
                out.println(file.getName());
            }
        } 
        out.close();
    }
}


P.S. Правда getPath() пока для галки путь возвращает, но в getContentCatalog не хочет работать.
P.S.S. Если что, то проект в прикрепленном файле, кому не лень или просто интересно гляньте ;)

Автор: LSD 2.10.2014, 15:25
Первая проблема которую я вижу: у тебя getContentCatalog() открывает запись в файл, пишет туда что-то, а потому рекурсивно вызывает сам себя и внутри будет снова там открывать запись в тот же файл. Так делать нельзя, вынеси открытие файл во внешнюю функцию и передавай PrintWriter как параметр.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)