2013-04-12 2 views
-3

я пытался много примеров из того же вопроса, который уже был задан в том числе:Копирование файлов в Java (не работает)

IOUtils.copy(); 

(копия является несуществующим метод)

Files.copy(source, target, REPLACE_EXISTING);

(REPLACE_EXISTING "не удается найти символ")

FileUtils.copyFile(); 

(FileUtils Безразлично t t)

Проблемы с их использованием в скобках.

Вот код для самого повторного метода для копирования:

import static java.nio.file.Files; 
public void Install() 
{ 
    CrtFol(); 
    CrtImgFol(); 
    CrtSaveFol(); 
    CrtSaveFile(); 
    open.runmm(); 
    //I have added the import for "Files" 
    Files.copy(img1, d4, REPLACE_EXISTING); 
    //Compiler says "Cannot find symbol" when I go over REPLACE_EXISTING 
    //img1 is a File and d4 is a File as a directory 
} 

Есть ли другие способы копирования или способ исправить одну выше?

+2

Просто сделать статический импорт или прямая ссылка на [StandardCopyOption] (http://docs.oracle.com/javase/7/docs/api/java/ NiO/файл/StandardCopyOption.html)? – BalusC

+0

'FileUtils' доступен в' apache commons-io' jar, включили ли вы его? 'http: // commons.apache.org/proper/commons-io/download_io.cgi' REPLACE_EXISTING должно быть логическим значением, то есть значение, которое вы передаете, должно быть' true' или 'false', вы не должны копировать все как есть – redDevil

+0

FileUtils и IOUtils являются частью [Apache commons-io] (http://commons.apache.org/proper/commons-io/) –

ответ

1

Не уверен, что на самом деле у Java есть что-то, что можно скопировать файл. Самый простой способ - преобразовать файл в поток байтов, а затем записать этот поток в другой файл. Что-то вроде этого:

 InputStream inStream = null; 
     OutputStream outStream = null; 

     File inputFile =new File("inputFile.txt"); 
     File outputFile =new File("outputFile.txt"); 

     inStream = new FileInputStream(inputFile); 
     outStream = new FileOutputStream(outputFile); 

     byte[] buffer = new byte[1024]; 


     int fileLength; 
     while ((fileLength = inStream.read(buffer)) > 0){ 

       outStream.write(buffer, 0, fileLength); 

       } 

     inStream.close(); 
     outStream.close(); 

где файл_ввода это файл копируется из и файл_вывода это имя копии.

+0

Работает ли она с фотографиями? – Matthew

+0

Я так считаю. Я искал его и нашел пример с jpg, так что должен. Дайте мне знать результат, если вы используете эту опцию :) –

+0

Я пробовал, но по какой-то причине JVM не может найти файл. – Matthew

3

С стандартной библиотекой Java 7 вы можете использовать java.nio.file.Files.copy(Path source, Path target, CopyOption... options). Не нужно добавлять дополнительные зависимости или выполнять свои собственные.

try { 
    Files.copy(Paths.get(sFrom), 
       Paths.get(sTo), 
       StandardCopyOption.REPLACE_EXISTING); 
} catch (IOException e) { 
    // Handle exception 
} 
+0

Не могли бы вы добавить некоторые подробности о том, как их использовать? – Matthew

+0

Добавлен пример. –

1

Я использую этот код:

import java.io.*; 

public class CopyTest { 

    public CopyTest() { 

    } 

    public static void main(String[] args) { 
     try { 
      File stockInputFile = new File("C://test.txt"); 
      File StockOutputFile = new File("C://output.txt"); 

      FileInputStream fis = new FileInputStream(stockInputFile); 
      FileOutputStream fos = new FileOutputStream(StockOutputFile); 
      int count = 0; 

      while((count = fis.read()) > -1){ 
       fos.write(count); 
      } 
      fis.close(); 
      fos.close(); 
     } catch (FileNotFoundException e) { 
      System.err.println("FileStreamsReadnWrite: " + e); 
     } catch (IOException e) { 
      System.err.println("FileStreamsReadnWrite: " + e); 
     } 

    } 

} 
Смежные вопросы