Sono nel mezzo dell'automazione di una serie di azioni che facciamo molto per guadagnare un po 'di tempo. Ciò comporta lo spostamento di file e l'avvio di alcuni batch.Java 7 ATOMIC_MOVE fornisce eccezioni
In questa particolare situazione, sto tentando di copiare un file da una posizione a un'altra posizione. Tutto funziona correttamente, fino a quando non cerco di utilizzare l'opzione di copia ATOMIC_MOVE. Questo è il mio codice:
private void copyToDropFolder(Datafile datafile, String company) throws IOException{
Path datafilePath = datafile.getDataPath();
String dropFolder = locations.getLocationFor("default");
Path dropPath = Paths.get(dropFolder, company.toUpperCase(),locations.getLocationFor("drop"), datafile.getFileName());
Files.copy(datafilePath, dropPath, StandardCopyOption.ATOMIC_MOVE);
}
Ho controllato e risolto le posizioni dei datafilePath e dropPath, sono entrambi validi. Ho provato con le altre 2 opzioni di copia standard e il programma funziona correttamente. Solo per ATOMIC_MOVE ottengo un UnsupportedOperationException. Non è che io abbia assolutamente bisogno di quella specifica opzione, ma sono curioso di sapere perché non funzionerei. Non trovo davvero nessun altro rapporto su questo problema. Lo sto facendo su una macchina Windows 7.
Mi manca qualcosa? O l'ATOMIC_MOVE non è supportato?
Perché provate e "ATOMIC_MOVE" un'operazione _copy_? Ciò non ha senso. O vuoi usare 'link()'? – fge
Quale tipo di file system stai provando? Può darsi che l'operazione non sia supportata (http://docs.oracle.com/javase/tutorial/essential/io/move.html) –
@fge Hai ragione ... quando la guardi in quel modo, non ha senso. Ma avere un'opzione ATOMIC_MOVE in un enum chiamato StandardCopyOption non ha molto senso: /. Tu lo hai indicato bene, non ci ho pensato in questo modo. Per ora, non voglio davvero usarlo, ho appena provato e fallisce. Sono perplesso sul motivo per cui fallirebbe. – anothernoc