public String recordContextFormFile(String filename){
FileInputStream filei=null;
ByteArrayOutputStream out = new ByteArrayOutputStream();;
try{
filei =context.openFileInput(filename);
int len=0;
byte[] data = new byte[1024];
while((len =filei.read(data))!=1 ){
out.write(data, 0, len);
}
return new String(out.toByteArray());
}catch (Exception e) {
e.printStackTrace();
}
FileInputStream filei=null;
ByteArrayOutputStream out = new ByteArrayOutputStream();;
try{
filei =context.openFileInput(filename);
int len=0;
byte[] data = new byte[1024];
while((len =filei.read(data))!=1 ){
out.write(data, 0, len);
}
return new String(out.toByteArray());
}catch (Exception e) {
e.printStackTrace();
}
return “”;
}
运行程序后不报错 但是输出的是“” 假如将return new String(out.toByteArray()); 移到return “”;这里 就能返回值,
问一下下 不是在try{}里面 有返回值就结束了吗 怎么还会返回””
解决方案
40
题主对于你说的不报错本人深表怀疑。
其次,你得到的所谓的返回值的正确性也表示怀疑。
原因是你的程序有个未知变量context导致无法执行,本人仅指出几个修改意见。具体见下面源代码。
其次,你得到的所谓的返回值的正确性也表示怀疑。
原因是你的程序有个未知变量context导致无法执行,本人仅指出几个修改意见。具体见下面源代码。
import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; public class IOExample { public static String recordContextFormFile(String filename) { FileInputStream filei = null; ByteArrayOutputStream out = new ByteArrayOutputStream(); ; try { // filei = context.openFileInput(filename); filei = new FileInputStream(filename); int len = 0; byte[] data = new byte[1]; while ((len = filei.read(data)) != -1) { out.write(data, 0, len); } return new String(out.toByteArray(),"gbk");//or "utf-8" } catch (Exception e) { e.printStackTrace(); }finally{ if(filei != null){ //这里在没有框架控制的情况下要把文件流关闭,否则会产生内存泄露。 try { filei.close(); } catch (IOException e) { e.printStackTrace(); } } } return "出异常啦!"; } public static void main(String[] args) { //这里filename你可以在本人电脑某个地方建一个文件,随便输入点内容。 String filename = "d:/p1.py"; String result = recordContextFormFile(filename); System.out.println(result); } }