Eu quero copiar arquivos de um diretório para outro (subdiretório) usando Java. Eu tenho um diretório, dir, com arquivos de texto. Eu itero os 20 primeiros arquivos no diretório e quero copiá-los para outro diretório no diretório dir, que eu criei antes da iteração. No código, quero copiar o review
(que representa o i-ésimo arquivo de texto ou revisão) para trainingDir
. Como posso fazer isso? Parece não haver essa função (ou eu não consegui encontrar). Obrigado.
boolean success = false;
File[] reviews = dir.listFiles();
String trainingDir = dir.getAbsolutePath() + "/trainingData";
File trDir = new File(trainingDir);
success = trDir.mkdir();
for(int i = 1; i <= 20; i++) {
File review = reviews[i];
}
Respostas:
Por enquanto, isso deve resolver seu problema
FileUtils
classe da biblioteca apache commons-io , disponível desde a versão 1.2.Usar ferramentas de terceiros em vez de escrever todos os utilitários por conta própria parece ser uma idéia melhor. Pode economizar tempo e outros recursos valiosos.
fonte
FileUtils.copyDirectory(source,dest)
aFileUtils.copyFile(source, dest)
, isso pode criar diretório se ele não existeAinda não existe um método de cópia de arquivo na API padrão. Suas opções são:
fonte
Em Java 7, não é um método padrão para copiar arquivos em java:
Files.copy.
Ele se integra à E / S nativa de O / S para obter alto desempenho.
Veja minha maneira concisa A no padrão de copiar um arquivo em Java? para uma descrição completa do uso.
fonte
O exemplo abaixo do Java Tips é bastante direto. Desde então, mudei para o Groovy para operações que lidam com o sistema de arquivos - muito mais fácil e elegante. Mas aqui está o Java Tips que eu usei no passado. Não possui o tratamento robusto de exceção necessário para torná-lo à prova de idiotas.
fonte
sourceLocation.exists()
, no caso para evitarjava.io.FileNotFoundException
Se você deseja copiar um arquivo e não movê-lo, pode codificar desta maneira.
fonte
O Spring Framework possui muitas classes de utilitários semelhantes, como o Apache Commons Lang. Então aí está
org.springframework.util.FileSystemUtils
fonte
O apache commons Fileutils é útil. você pode fazer as atividades abaixo.
copiar arquivo de um diretório para outro diretório.
usar
copyFileToDirectory(File srcFile, File destDir)
diretório de cópia de um diretório para outro diretório.
usar
copyDirectory(File srcDir, File destDir)
copiar o conteúdo de um arquivo para outro
usar
static void copyFile(File srcFile, File destFile)
fonte
fonte
Fonte: https://docs.oracle.com/javase/tutorial/essential/io/copy.html
fonte
O FileUtils do Apache commons será útil, se você quiser apenas mover arquivos do diretório de origem para o destino em vez de copiar o diretório inteiro, você pode:
Se você quiser pular diretórios, poderá:
fonte
Você parece estar procurando a solução simples (uma coisa boa). Eu recomendo usar o FileUtils.copyDirectory do Apache Common :
Seu código pode ser agradável e simples assim:
fonte
Inspirado pela resposta de Mohit neste tópico . Aplicável apenas ao Java 8.
O seguinte pode ser usado para copiar tudo recursivamente de uma pasta para outra:
FTW no estilo de fluxo.
Atualize 2019-06-10: observação importante - feche o fluxo (por exemplo, tente com recurso) adquirido pela chamada Files.walk. Obrigado a @jannis pela questão.
fonte
Files.walk(source)
como recomendado no docs ou você pode ficar em apurosAbaixo está o código modificado de Brian, que copia arquivos do local de origem para o local de destino.
fonte
Java 8
Método de cópia
fonte
Você pode solucionar o problema com copiar o arquivo de origem para um novo arquivo e excluir o original.
fonte
Usar
org.apache.commons.io.FileUtils
É tão útil
fonte
fonte
As classes NIO tornam isso muito simples.
http://www.javalobby.org/java/forums/t17036.html
fonte
eu uso o código a seguir para transferir um upload
CommonMultipartFile
para uma pasta e copiar esse arquivo para uma pasta de destino na pasta webapps (por exemplo, projeto web),fonte
Copie o arquivo de um diretório para outro diretório ...
fonte
aqui é simplesmente um código java para copiar dados de uma pasta para outra, você precisa apenas fornecer a entrada da origem e do destino.
este é um código de trabalho para o que você quer ... deixe-me saber se ajudou
fonte
Você pode usar o seguinte código para copiar arquivos de um diretório para outro
fonte
fonte
fileChooser
?código a seguir para copiar arquivos de um diretório para outro
fonte
fonte
Nem mesmo essa importação complicada e nenhuma necessária no Java 7:
O
renameTo( )
método altera o nome de um arquivo:public boolean renameTo( File destination)
Por exemplo, para alterar o nome do arquivo
src.txt
no diretório de trabalho atual paradst.txt
, você deve escrever:É isso aí.
Referência:
Harold, Elliotte Rusty (2006-05-16). E / S Java (pág. 393). O'Reilly Media. Edição Kindle.
fonte
Você pode usar o seguinte código para copiar arquivos de um diretório para outro
fonte
Após a função recursiva que escrevi, se isso ajudar alguém. Ele copiará todos os arquivos no diretório sourced para o destinationDirectory.
exemplo:
rfunction("D:/MyDirectory", "D:/MyDirectoryNew", "D:/MyDirectory");
fonte
Se você não deseja usar bibliotecas externas e deseja usar as classes java.io em vez de java.nio, pode usar este método conciso para copiar uma pasta e todo o seu conteúdo:
fonte
A melhor maneira, de acordo com meu conhecimento, é a seguinte:
fonte