невозможно Копировать источники из цели в место назначения для пакета - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь реализовать функцию, которая может перейти из моих исходных каталогов в каталог пакета подготовки файла для миграции на серверы.Это функция, использующая цель и назначение, чтобы скопировать все файлы Java в соответствующие файлы, если я указал их в папке пакета.

private static void copyfilesforsurce(File source, File dest) throws IOException { 
    FileChannel sourceChannel = null;
    FileChannel destChannel = null;
    try {
        sourceChannel = new FileInputStream(source).getChannel();
        destChannel = new FileOutputStream(dest).getChannel();
        destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
       }finally{

sourceChannel.close ();

           destChannel.close();
   }}

но я получаю следующее исключение AS:

at preparepackage.preparepackagefolder.copyFileUsingJava7Files(preparepackagefolder.java:82)
    at preparepackage.preparepackagefolder.access$14(preparepackagefolder.java:74)
    at preparepackage.preparepackagefolder$3.actionPerformed(preparepackagefolder.java:233)
    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.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(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)

строка исключения выделяется как sourceChannel.close ();

1 Ответ

0 голосов
/ 27 августа 2018

В строке sourceChannel.close();.

имеется исключение NullPointerException. Это означает, что строка sourceChannel = new FileInputStream(source).getChannel(); не была успешно завершена.

Строка sourceChannel = new FileInputStream(source).getChannel(); не завершится успешно, если new FileInputStream(source) выдает FileNotFoundException, из которых FileInputStream JavaDoc говорит:

FileNotFoundException - если файл не существует, это каталог, а не обычный файл, или длянекоторые другие причины не могут быть открыты для чтения.

Чтобы проверить это, вы можете добавить следующие строки в начале вашего метода:

System.out.format("%s - isFile: %b, isDirectory: %b, canRead: %b", 
    source, source.isFile(), source.isDirectory(), source.canRead());

В этой строке должно быть выведено имяваш исходный файл, за которым следует "- isFile: true, isDirectory: false, canRead: true".


Чтобы скопировать все файлы из каталога в какой-либо другой каталог, вы можете использовать Apache Commons IO, FileUtils.copyFile метод:

FileUtils.copy(source, dest);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...