/** * Выгрузить файл на удаленный клиент с локальной директории текущего запроса. * * @param outputStream - выходный поток данных. * @param fileName - имя выгружаемого файла. * @throws SessionInitPathException * @throws IOException */ public void upload(OutputStream outputStream, String fileName) throws IOException { // check: Допустимость аргументов Checker.nullArgumentCheck(outputStream, "Argument outputStream is null."); Checker.nullArgumentCheck(fileName, "Argument fileName is null."); // Ищем файл с таким именем в списке выходных файлов модуля IOFile outputFile = null; outputFile = search(fileName, TypeIOFile.OUTPUT); Checker.nullArgumentCheck(outputFile, "File not found. " + fileName); // Открываем потоки данных DataInputStream fileStream = new DataInputStream(new BufferedInputStream(new FileInputStream(outputFile))); DataOutputStream responseStream = new DataOutputStream(new BufferedOutputStream(outputStream)); // Перенаправляем поток в файл RWUtils.redirect(fileStream, responseStream); // Закрываем потоки данных fileStream.close(); responseStream.close(); // Обновление статуса outputFile.setStatus(StatusIOFile.UPLOADED); updateStatus(); }
/** * Загрузить файл с удаленного клиента в локальную директорию текущего запроса. * * @param inputStream - входной поток данных. * @param fileName - имя загружаемого файла. * @throws SessionInitPathException * @throws IOException */ public void download(InputStream inputStream, String fileName) throws IOException { // check: Допустимость аргументов Checker.nullArgumentCheck(inputStream, "Argument inputStream is null."); Checker.nullArgumentCheck(fileName, "Argument fileName is null."); // Ищем файл с таким именем в списке входных файлов модуля IOFile inputFile = null; inputFile = search(fileName, TypeIOFile.INPUT); Checker.nullArgumentCheck(inputFile, "File not found. " + fileName); // Открываем потоки данных DataInputStream requestStream = new DataInputStream(new BufferedInputStream(inputStream)); DataOutputStream fileStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(inputFile))); // Перенаправляем поток в файл RWUtils.redirect(requestStream, fileStream); // Закрываем потоки данных requestStream.close(); fileStream.close(); // Обновление статуса inputFile.setStatus(StatusIOFile.DOWNLOADED); updateStatus(); }