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 :(得分:2)
如果你从while
循环“中断”,则没有返回语句。那是你的问题。因为您的方法声明它返回一个字符串,所以每个控制流路径都必须返回一个值。
答案 1 :(得分:0)
如果在第一次迭代中执行了break
,则不会返回任何内容。这就是编译器试图告诉你的。
还有一些其他相当严重的问题:
return e.getMessage()
没有任何意义b.encode(buf)
在少于buf.length
字节被读取的情况下是错误的