2016-08-10 9 views
2

У меня возникла эта проблема, что я создаю файл, но это создает пустой файл.Создать файл из OutputStream

Я использую API Dropbox, Code of Dropbox работает хорошо, но я не знаю, что я не в порядке. Я использовал коды 2º и 3º для своего приложения, это работает хорошо.

Это работает иерархически. Я отправляю outputStream для fuction. Но это пусто.

Я использую outputStream, потому что мне нужно, чтобы это работало с выходным потоком.

1º Код (Test Класс || Call):

File tempFile=new File("C:\\PRUEBAS_TFG\\cloud.png"); if (! tempFile.exists()) { tempFile.createNewFile(); } 
File file = new File("C:\\PRUEBAS_TFG\\cloud.png"); 
OutputStream outputStream = new FileOutputStream(file); 
catmanager.downloadFilesToItem(catmanager.getAllListCatalog().get(0), catmanager.getAllListCatalog().get(0).getItems().get(2), listFile, outputStream); 
outputStream.close(); 

2º Код (Класс catmanager || 1ºbody):

public void downloadFilesToItem(Catalog catalog, Item item, List<String> files, OutputStream output){ 
    try{ 
     String fsPath; 
     fsPath = pathCatalog(catalog); 
     getFSManager().changeDirectoryConfigNPath(fsPath+"/"+item.getName()+"_item"); 
     for(int i = 0;i<files.size();i++){ 
      getFSManager().downloadFile(files.get(i), output); 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

3ºCode (класс FSManager || 2ºbody)

public void downloadFile(String fileName, OutputStream output) throws IOException{//Aqui deveria Buscar el Fichero Funciona por que da la casualidad que esta el fichero en la primera nube 
    /** Cogemos la lista de FS del usuario */ 
    List<IFileSystem> aux = getFileSystemsUser(); 

    for(int i = 0; i < aux.size();i++){ 
     /** Se realiza la Funcionalidad del metodo*/ 
     System.out.println(aux.get(i).toString()); 
     try{ 
      aux.get(i).downloadFile(_listPath.get(i)+"/"+fileName, output); 
      i = aux.size()+1; 
     }catch(IOException e) { 

     } 
    } 
} 

4ºCode (класс aux Dropbox || API Dropbox):

public void downloadFile(String fileName, OutputStream aux) throws IOException{ 
    try{ 
     getDbxClient().getFile(fileName, null, aux); 
    }catch(IOException e){ 
     throw e; 
    }catch(DbxException u){ 
     throw new IOException(u.getCause()); 
    } 
} 

Thanks Advance.

+0

Не могли бы вы предоставить минимальный (и лучше отформатированный) пример, пожалуйста? :-) Мы были бы рады помочь. :-) –

+0

спасибо за совет, я изменил сообщение –

ответ

0

Предположим, вам понадобится flush (см. Соответствующий метод) outputsteam в ваш файл (и закройте его). API Dropbox имеет дело с OutputStream, но, конечно, все равно, что вы хотите записать файл.

вы можете посмотреть ниже example.

+0

Я использовал fuction Flush на всех уровнях, но File по-прежнему пуст. –

+0

Вы уже имеете дело с преподавателем по адресу https://www.dropbox.com/developers-v1/core/start/java? –

+0

Да, функция Dropbox работает хорошо. Я использую этот Dropbox fuction в своем приложении для других процессов. Спасибо за ваш интерес –

1

Вы используете один FileOutputStream для загрузки списка файлов. Ожидаете ли вы объединить файлы (на одном изображении) или что-то в этом роде?

Если этого не ожидается, я, конечно же, не передам FileOutputStream в качестве входного параметра ваших последующих вызовов (2,3,4), а экземпляр File, представляющий эту папку. В последнем методе (4) создайте (и закройте после загрузки) новый файл FileOutputStream для файла в этой папке. Что-то вроде

public void downloadFile(String fileName, File folder) throws IOException{ 
    OutputStream outputStream = new FileOutputStream(new File(folder, filename)); 
    try{ 
    getDbxClient().getFile(fileName, null, outputStream); 
    }catch(IOException e){ 
    throw e; 
    }catch(DbxException u){ 
    throw new IOException(u.getCause()); 
    }finally { 
    outputstream.close(); 
    } 
} 
+0

Проблема в том, что мне нужно иерархически класс для моего приложения в JEE. Мне нужно, чтобы OutputStream приходил к классу Dropbox, и класс dropbox приходил для тестирования класса с контейнером OutputStream. Спасибо за ваш интерес –

 Смежные вопросы

  • Нет связанных вопросов^_^