2011-01-27 150 views
-1
package com.cordys.report; 

import java.io.FileInputStream; 

import org.apache.commons.codec.binary.Base64; 

public class Encode { 
    // file path ex : C:\Program Files\Cordys\Web\reports\I0001180.pdf 
    public static String encodeFileStream(String filePath) { 
     try { 
      FileInputStream fin = new FileInputStream(
        "E:/CSS Document/Test.pdf"); 
      StringBuffer sb = new StringBuffer(); 
      int lineLength = 72; 
      byte[] buf = new byte[lineLength/4 * 3]; 

      while (true) { 
       int len = fin.read(buf); 
       if (len <= 0) { 
        break; 
       } 

       // new Base64().encode(byte); 
       // sb.append(Base64.encode(buf)); 
       // sb.append(Base64.encodeBase64(buf)); 

       Base64 b = new Base64(); 
       sb.append(b.encode(buf)); 
       return sb.toString(); 
      } 
     } 
     catch (Exception e) { 
      return e.getMessage(); 
     } 
    } 
} 
+0

什麼是你的問題? – Satya 2011-01-27 05:11:55

+0

格式化您的代碼 – Elalfer 2011-01-27 05:12:23

回答

2

如果你「打破」了while循環,沒有return語句。那是你的問題。因爲你的方法聲明它返回一個字符串,所以每個控制流路徑必須返回一個值。

0

如果在第一次迭代中執行break,則不會返回任何結果。這正是編譯器試圖告訴你的。

還有其他一些比較嚴重的問題:

  • return e.getMessage()只是沒有任何意義
  • b.encode(buf)是錯誤的情況下,不到buf.length字節得到讀