2016-08-10 10 views
2

ファイルを作成していますが、空のファイルが作成されているというこの問題があります。OutputStreamからファイルを作成する

私はDropboxのAPIを使用していますが、Dropboxのコードは正常に動作しますが、うまくいかないことはわかりません。私は2度と3度のコードを私のアプリに使っていますが、これはうまく動作しています。

これは階層的に動作します。私はfuctionのためにoutputStreamを送信しています。しかしこれは空です。

出力ストリームで動作する必要があるので、私はoutputStreamを使用しています。

1ºコード(クラステスト||コール):

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(Class 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()); 
    } 
} 

ありがとうございます。

+0

最小限の(より適切な形式の)例を提供してください。私たちは助けてくれるでしょう。 :-) –

+0

アドバイスありがとう、私は投稿を修正しました –

答えて

0

ファイルに出力された(と閉じる)flush(対応する方法を参照)する必要があります。 Dropbox APIはOutputStreamを扱っていますが、ファイルを書きたいとは思いません。

あなたはexampleの次を見ることができます。

+0

すべてのレベルでfuction Flushを使用しましたが、ファイルはまだ空です。 –

+0

あなたはすでにhttps://www.dropbox.com/developers-v1/core/start/javaでお教えしていますか? –

+0

はい、Dropboxの機能がうまく動作します。私は他のプロセスのために私のアプリでこのDropbox fuctionを使用しています。あなたの興味をお寄せいただきありがとうございます –

1

FileOutputStreamを使用してファイルのリストをダウンロードしています。ファイルを(1つのイメージで)マージすることを期待していますか?

これが予想されない場合は、私は確かに、連続コール(2,3,4)の入力パラメータとしてFileOutputStreamを渡すのではなく、そのフォルダを表す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のコンテナでクラスをテストするために到着する必要があります。 ありがとうございます –

関連する問題