Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> копируем файлы в папку 
:(
    Опции темы
snorkee
Дата 10.4.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 5.3.2005
Где: Эстония

Репутация: нет
Всего: нет



Вопрос вот в чём - у меня есть массив File[] MainFiles который хранит список всех файлов, папок и т.д.
в некоторой директории. У меня есть GUI который например выводит для меня информацию о том сколько у меня там mp3 файлов,
сколько avi и т.д. Я хочу, чтоб когда я поставлю галочку в checkbox сMp3 и нажму кнопку Copy у меня создалась директория
Mp3 и в ней записались все mp3 файлы.
вот код...


Код



else if(cMp3.isSelected()==true){ //проверка - нажат ли checkbox
         
int index=1;
File dirMp3 = new File("E:\\ForProject\\Mp3\\");  // cоздаём директорию
dirMp3.mkdir();


while(indexes[2][index]!=0){          // это массив у меня хранит целочисленные значения, те индексы массива всех файлов mainFiles в которых элементы являются mp3 файлами
    
try {
copy(mainFiles[indexes[2][index]],dirMp3); // здесь я вызываю функцию copy, задаю ей mp3 файл и File (директорию, куда хочу скопироватьэтот файл)
} catch (IOException e1) {
e1.printStackTrace();
}
inde++;
}
}



    public static void copy(File source, File dest) throws IOException {
         FileChannel in = null, out = null;
         try {          
              in = new FileInputStream(source).getChannel();
              out = new FileOutputStream(dest).getChannel();

              long size = in.size();
              MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size);

              out.write(buf);

         } finally {
              if (in != null)          
               in.close();
              if (out != null)     
               out.close();
         }
    }







результат у меня получается не тот...при таком раскладе просто создаётся папка Mp3 и всё. если я не вызываю функцию mkdir(),
то получается просто файл c именем Mp3 без расширения в который как я понимаю записывается содержание моего последнего *.mp3
файла.
PM MAIL WWW ICQ MSN   Вверх
Domestic Cat
Дата 10.4.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 1
Всего: 172



Ты копируешь вызовом
Код

copy(mainFiles[indexes[2][index]],dirMp3)

но dirMp3 должен быть файлом, а не директорией.

Добавлено @ 22:21
М
 
Большая просьба: задавйте вопросы в соответствующем форум, не валите все в Общие вопросы. Не волнуйтесь, в любом форуме вероятность получить ответ одинакова.



--------------------

PM   Вверх
snorkee
Дата 10.4.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 5.3.2005
Где: Эстония

Репутация: нет
Всего: нет



я не очень понял твою мысль но придумал уже другой вариант
PM MAIL WWW ICQ MSN   Вверх
batigoal
Дата 11.4.2005, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



Я делал для вложенного копирования такой метод:
Код

private void cascadeCopy(File f, File outputFile)
    {
        if(!f.isDirectory()) copyFile(f, outputFile);
        else
        {
            outputFile.mkdir();
            File[] filesInDir = f.listFiles();
            for(int i=0; i<filesInDir.length; i++)
            {
                cascadeCopy(filesInDir[i], new File(outputFile+"\\"+filesInDir[i].getName()));
            }
        }
    }
private void copyFile(File inFile, File outFile)
    {
        try
        {
            FileReader in = new FileReader(inFile);
            FileWriter out = new FileWriter(outFile);
            int c;

            while ((c = in.read()) != -1) out.write(c);

            in.close();
            out.close();
        }
        catch(Exception e)
        {
            MainFrame.logger.severe("Error copying file "+inFile.getPath()+" to file "+outFile.getPath()+"!");
        }
    }





--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
jer1
Дата 11.4.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.1.2005
Где: Харьков Украина

Репутация: нет
Всего: 5



Код

  new File(outputFile+"\\"+filesInDir[i].getName()))


лучше вместо "\\", использовать "/" - так короче (для windows система сама поставит как надо)


--------------------
:w!q
PM MAIL   Вверх
batigoal
Дата 11.4.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



Спасибо, учту.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.