java.io.IOException: больше нет файлов - (при копировании PDF в другое место) - PullRequest
0 голосов
/ 18 июня 2019

Я унаследовал этот код, который содержит функцию, которая копирует файл .pdf из одного местоположения в другое, создавая в процессе новые папки (названные по значению хеш-функции) и сохраняя новый путь к базе данных, которую впоследствии использует инструмент BI. для доступа к файлу через API.

После того, как мы переместили файловый сервер на новый хост и четыре раза проверили разрешения и ссылки на пути, мы получаем это исключение java.io.ioexception при копировании файлов в новое место в коде. Копирование не выполняется, папки не создаются, где это применимо, и файлы не доступны через API.

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

Есть идеи о том, что вызывает это исключение IOexception? Никогда раньше не сталкивался с этим, и я не могу найти какую-либо тему в Интернете.

Функция:

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;

public boolean pushFile(File file, String newFileName)
{
    File newFile = new File(SAN_LOCATION + "\\" + newFileName.subSequence(0, 2) + "\\" + newFileName);

    try
    {

        System.out.print("Copying " + file.getName() + " to: " + newFile.getAbsolutePath());
        FileUtils.copyFile(file, newFile);
        System.out.println(" - Good file transfer");

    } catch (IOException ex)
    {
        System.out.println(" - Bad file transfer");
        Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    }
    return true;
}

Фрагмент журнала:

Copying ARC FERM 2019-06-18 07-35-58_AM0000006.pdf to: \\tf-fs-1\arcstor\fc\fc3533e07547850176b671730ddccfcc - Bad file transfer
java : Jun 18, 2019 11:01:27 AM datatosql.PushToSQL pushFile
At C:\arc\ch_agilent_hplc.ps1:2 char:1
+ java -jar ".\Agilent.jar" CH HPLC "$file" 2>&1 | Out-File C:\arc\Logs\Agilent\ch ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Jun 18, 2019 11...hToSQL pushFile:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

SEVERE: null
java.io.IOException: There are no more files
    at java.io.WinNTFileSystem.canonicalize0(Native Method)
    at java.io.WinNTFileSystem.canonicalize(Unknown Source)
    at java.io.File.getCanonicalPath(Unknown Source)
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1076)
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1040)
    at datatosql.PushToSQL.pushFile(PushToSQL.java:763)
    at datatosql.PushToSQL.push(PushToSQL.java:508)
    at agilent.Agilent.main(Agilent.java:503)
    enter code here

1 Ответ

0 голосов
/ 19 июня 2019

Поиск в Google "Нет больше файлов" находит людей, у которых есть проблемы с программным обеспечением безопасности, в частности, ASUS Data Security Manager. Поэтому я подозреваю, что проблема не в вашем коде Java. Вы можете доказать это, скопировав файл вручную, примерно так:

copy some.file "\\tf-fs-1\arcstor\fc\fc3533e07547850176b671730ddccfcc"

Я получил путь из вашего сообщения об ошибке, но проверьте, что он правильный! Я думаю, что вам нужны цитаты по пути. Я предполагаю, что это не будет работать, потому что что-то заблокировано на удаленной машине.

...