java错误缺少return语句

时间:2011-01-27 05:10:12

标签: java

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

2 个答案:

答案 0 :(得分:2)

如果你从while循环“中断”,则没有返回语句。那是你的问题。因为您的方法声明它返回一个字符串,所以每个控制流路径都必须返回一个值。

答案 1 :(得分:0)

如果在第一次迭代中执行了break,则不会返回任何内容。这就是编译器试图告诉你的。

还有一些其他相当严重的问题:

  • return e.getMessage()没有任何意义
  • b.encode(buf)在少于buf.length字节被读取的情况下是错误的