2013-07-30 57 views
0

我試圖從服務器下載文件,服務器向我發送一個沒有擴展名的八位字節流,但是它在http頭文件(名稱爲fileType)中發送擴展名。OutputStream追加文件類型

我想要做的是讀取該HTTP標頭,然後將文件類型追加到下載的文件。

下面的代碼工作正常,如果我手動添加擴展名的文件是好的:

@Override 
protected String doInBackground(String... params) { 
    String fileUrl = params[0]; 
    String pathToSave = params[1]; 
    String appId = params[2]; 
    URL url; 
    try { 
     url = new URL(fileUrl); 
     URLConnection connection = url.openConnection(); 
     connection.connect(); 
     int lenghtOfFile = connection.getContentLength(); 
     InputStream input = new BufferedInputStream(url.openStream()); 
     OutputStream output = new FileOutputStream(pathToSave); 
     byte data[] = new byte[1024]; 

     long total = 0; 
     int count = 0; 
     while ((count = input.read(data)) != -1) { 
      total += count; 
      output.write(data, 0, count); 
     } 
//   String temp = connection.getHeaderField("fileType"); 
//   byte [] extension = connection.getHeaderField("fileType").getBytes(); 
//   output.write(extension, 0, extension.length); 
     output.flush(); 
     output.close(); 
     input.close(); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 

通過調試我看到溫度是「JPG」,那麼爲什麼不把這些3條線工作?

//   String temp = connection.getHeaderField("fileType"); 
//   byte [] extension = connection.getHeaderField("fileType").getBytes(); 
//   output.write(extension, 0, extension.length); 

感謝您閱讀

回答

2

爲什麼要追加文件類型的文件的內容?

如果你想將其追加到文件名,那麼你需要將其追加到pathToSave,而不是到outputstream

.... 
url = new URL(fileUrl); 
URLConnection connection = url.openConnection(); 
connection.connect(); 
String temp = connection.getHeaderField("fileType"); 
pathToSave = pathToSave + "." + temp; 
+0

有時我們錯過了明顯的,謝謝;) – HeWhoCodes

+1

@Crockes別客氣。只需要注意,temp可能是'null',所以你可能想通過添加if語句來檢查你的代碼是否爲null –

+1

再次感謝你,upvoted :) – HeWhoCodes