Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Создание файлов и папок на java в сервлете


Автор: yario 16.6.2008, 01:14
Подскажите, а как создать папку на java в сервлете? как копировать файл, дублировать, переименовать файл?
самое главное мне это как создать папку? То есть файл с некоторым расширением я могу, а вот просто паку как создать не знаю.

Автор: ecologist 16.6.2008, 09:44
Ну где-то так

Код

import java.io.*;

class CreateDirectory 
{
   public static void main(String args[])
  {
      try{
         String strDirectoy ="test";
         String strManyDirectories="dir1/dir2/dir3";

         // Create one directory
         boolean success = (new File(strDirectoy)).mkdir();
         if (success) {
            System.out.println("Directory: " + strDirectoy + " created");
         }    
  

         // Create multiple directories
         success = (new File(strManyDirectories)).mkdirs();
         if (success) {
            System.out.println("Directories: " + strManyDirectories + " created");
        }

     }
     catch (Exception e){//Catch exception if any
        System.err.println("Error: " + e.getMessage());
     }
  }
}

Автор: yario 16.6.2008, 23:09
а как копировать файл и вставить в другую директорию, например?

Автор: v2v 16.6.2008, 23:23
Код

    void copy(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }


Добавлено через 50 секунд
или 
Код

    try {
        // Create channel on the source
        FileChannel srcChannel = new FileInputStream("srcFilename").getChannel();
    
        // Create channel on the destination
        FileChannel dstChannel = new FileOutputStream("dstFilename").getChannel();
    
        // Copy file contents from source to destination
        dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
    
        // Close the channels
        srcChannel.close();
        dstChannel.close();
    } catch (IOException e) {
    }



Автор: yario 16.6.2008, 23:37
Спасибо большое! и последний вопрос это удаление директории и файла.

Автор: v2v 16.6.2008, 23:52
c удалением директорий надо быть осторожным: сначало надо удалить всё что внутри , а потом и саму директорию:

Код

// удаление файла
boolean success = (new File("fileName")).delete();
if (!success) {
   // не удалилось
}


// удаление каталога : рекурсивно
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
    
        //  удаляем директорию или файл на самом нижнем уровне.
        return dir.delete();
    }


Автор: yario 17.6.2008, 03:04
жаль, что такое удаление удаляет директорию если она пуста... а вот если в ней один, а тем более куча файлов то все становится сложнее.
Как удалить папку если там куча файлов? есть конешно вариант сначала поудалять по очереди файлы из папки, а потом саму папку. при этом придется прописывать имена всех файлов.....

Автор: Kangaroo 17.6.2008, 03:14
yario, ты хоть код их предыдущего поста запускал? Там даже ответ на твой вопрос есть:

Цитата

// удаление каталога : рекурсивно

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