请看下面两个程序,我是想读取文件以后,返回文件里面的内容,但是尝试了几次,不知道为什么第一个程序总是返回null。使用debug调试的时候发现在执行到while ((s1 = bufRead.readLine())!= null) {这句时s1 是有值的,但是到了finally语句块,s1 = null; 第二个程序是正确的。为什么错误A和B的s1都是null呢?请各位亲帮忙解答一下。
错误A====>>
public String readFile(String fileUrl){
String s1 = "";
int line = 1;
BufferedReader bufRead = null;
try {
File file = new File(fileUrl);
if (file.exists() && file.isFile() ) {
FileInputStream fileIn = new FileInputStream(file);
bufRead = new BufferedReader(new InputStreamReader(fileIn));
while ((s1 = bufRead.readLine())!= null) {
line++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if (bufRead != null) {
try {
bufRead.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return s1;
}
错误B====>>
public String readFile(String fileUrl){
String s1 = "";
int line = 1;
BufferedReader bufRead = null;
try {
File file = new File(fileUrl);
if (file.exists() && file.isFile() ) {
FileInputStream fileIn = new FileInputStream(file);
bufRead = new BufferedReader(new InputStreamReader(fileIn));
while ((s1 = bufRead.readLine())!= null) {
s1 = bufRead.readLine();
line++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if (bufRead != null) {
try {
bufRead.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return s1;
}
正确===>>
public String readFile(String fileUrl){
StringBuffer str = new StringBuffer();
String s1 = "";
int line = 1;
BufferedReader bufRead = null;
try {
File file = new File(fileUrl);
if (file.exists() && file.isFile() ) {
FileInputStream fileIn = new FileInputStream(file);
bufRead = new BufferedReader(new InputStreamReader(fileIn));
while (( s1 = bufRead.readLine())!= null) {
str.append(s1);
line++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if (bufRead != null) {
try {
bufRead.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return str.toString();
}