先看输出网页的结果:
左上角的null总是存在:
最后查了很久终于找到是读的时候代码问题了:
package cn.cmsutil;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class FileIo {
public String readFile(String file) {
BufferedReader br = null;
String line = null ;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
file), "gbk"));
String str = br.readLine();
while((str=br.readLine())!=null){
line+=str;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return line;
}
public void writeFile(String file, String str) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file), "utf-8"));
bw.write(str);
bw.flush();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
由于line+=str;,因为line一开始就是null,自然就多拼了一个null。修改代码,换成StringBuilder:
public String readFile(String file) {
BufferedReader br = null;
StringBuilder sb=new StringBuilder();
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
file), "gbk"));
String str = br.readLine();
while((str=br.readLine())!=null){
sb.append(str);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}