Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从静态上下文引用非静态方法编码(字节[]) package com.cordys.report; 导入java.io.FileInputStream; 导入org.apache.commons.codec.binary.Base64; 公共类编码{ 公共静态字符串encodeFileStream(字符串文件路径)//文件路径ex:C:\Program Files\Cordys\Web\reports\I0001180.pdf { 试一试{ FileInputStream fin=新的FileInputStream(“E:/CSS文档/Test.pdf”); StringBuffer sb=新的StringBuffer(); int lineLength=72; byte[]buf=新字节[lineLength/4*3]; while(true){ int len=最终读数(buf); 如果(len_Java - Fatal编程技术网

无法从静态上下文引用非静态方法编码(字节[]) package com.cordys.report; 导入java.io.FileInputStream; 导入org.apache.commons.codec.binary.Base64; 公共类编码{ 公共静态字符串encodeFileStream(字符串文件路径)//文件路径ex:C:\Program Files\Cordys\Web\reports\I0001180.pdf { 试一试{ FileInputStream fin=新的FileInputStream(“E:/CSS文档/Test.pdf”); StringBuffer sb=新的StringBuffer(); int lineLength=72; byte[]buf=新字节[lineLength/4*3]; while(true){ int len=最终读数(buf); 如果(len

无法从静态上下文引用非静态方法编码(字节[]) package com.cordys.report; 导入java.io.FileInputStream; 导入org.apache.commons.codec.binary.Base64; 公共类编码{ 公共静态字符串encodeFileStream(字符串文件路径)//文件路径ex:C:\Program Files\Cordys\Web\reports\I0001180.pdf { 试一试{ FileInputStream fin=新的FileInputStream(“E:/CSS文档/Test.pdf”); StringBuffer sb=新的StringBuffer(); int lineLength=72; byte[]buf=新字节[lineLength/4*3]; while(true){ int len=最终读数(buf); 如果(len,java,Java,MethodBase64.encode()不是static。您必须创建类Base64的实例,然后调用该方法,即执行类似于newbase64().encode(字节)的操作,如中所示 请尝试Base64.encodeBase64()。您需要创建一个新对象并对该对象调用encode,因为该方法不是静态的,因此只能从其封闭类的实例调用它 package com.cordys.report; import java.io.FileInputStream; import org.apache.com

Method
Base64.encode()
不是
static
。您必须创建类
Base64
的实例,然后调用该方法,即执行类似于
newbase64().encode(字节)
的操作,如中所示

请尝试
Base64.encodeBase64()

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

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



}

确实是个更好的主意。+1谢谢你的回答,我试过了,但它再次抛出错误缺少return语句。@monika只是把return null;放在你的行之前}catch(异常e)@david事实上,返回应该在try/catch块之外,因为无法保证返回在内部时会到达。看起来像是完全重复的:即使使用的类也是相同的。好的,到目前为止,您已经创建了六个未注册的帐户。我已经合并了它们。请注册一个帐户(你问了六个问题,时间差不多了)然后标记这个问题。当你标记时,选择其他,让我将你的帐户合并到你注册的帐户中。
Base64 b = new Base64();
sb.append(b.encode(buf));