Pessoal,
Estou tentando usar o FileChannel para mover arquivos de um diretório para outro em um mesmo drive, de uma mesma máquina. Segue um pedaço do código que estou utilizando:
FileChannel dstChannel;
FileChannel srcChannel;
srcChannel = new FileInputStream(file).getChannel();
dstChannel = new FileOutputStream(dirBackup.getPath() + "\\" + nomeArquivo).getChannel();
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
srcChannel.close();
dstChannel.close();
Este código roda dentro de um laço “FOR”. Os arquivos começam a serem movidos,
mas aleatoriamente o código está dando o seguinte erro:
java.io.IOException: Espaço insuficiente de armazenamento para processar este comando
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFrom(Unknown Source)
at telas.FrmGerar.processaArquivos(FrmGerar.java:280)
at telas.FrmGerar.access$2(FrmGerar.java:196)
at telas.FrmGerar$3.actionPerformed(FrmGerar.java:645)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Pode parecer muito lógico que o problema seria de espaço em disco. Porém o disco onde os arquivos
estão localizados possui 200GB livre. Como disse, o erro ocorre aleatoriamente, por isso quando rodo o mesmo
código após dar o erro, funciona normalmente até que apresente o erro novamente. Os arquivos que estou
tentando mover possuem em média 1GB.
Se alguém puder ajudar.
obrigado.