非静态方法encode(byte [])不能从静态上下文引用

时间:2011-01-25 07:05:29

标签: java

package com.cordys.report;

import java.io.FileInputStream; 

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


public class Encode {
public static String encodeFileStream(String filePath) //file path ex : C:\Program Files\Cordys\Web\reports\I0001180.pdf
{    
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;
     }
    sb.append(Base64.encode(buf));

   return sb.toString();
 }
 }
 catch(Exception e) {
   return e.getMessage();
 }
}



}

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:4)

方法Base64.encode()不是static。您必须创建类Base64的实例,然后调用该方法,即执行new Base64().encode(bytes)

之类的操作

答案 2 :(得分:4)

您需要创建一个新的Base64对象并在该对象上调用encode,因为该方法不是静态的,因此只能从其封闭类的实例中调用它。

Base64 b = new Base64();
sb.append(b.encode(buf));