在读取文件的时候需要先判断是否到达文件的结尾
当使用高级缓冲字符流(BufferedReader)br.read()方法根据返回的整数来判断是否到达文件末尾,如果返回的是-1,则表示到达文件末尾,使用此种方法虽然可以判断是否能读取到内容,但可能会把第一个字母给读出,当再次使用readLine()读取的内容的时候,就可能会丢失第一个字符。
解决此问题可以使用br.readline() != null来判断是否到达文件末尾。
如下代码(我这里是分割文件的例子):
try {
InputStream is = new FileInputStream("D:/20140324.sql");
OutputStream os = null;
PrintWriter pw = null;
BufferedReader br = new BufferedReader(new InputStreamReader(is));
for (int i = 0; i < 300; i++) {
os = new FileOutputStream("D:/tep" + i + ".sql");
pw = new PrintWriter(os);
for (int j = 0; j < 50; j++) {
if (br.readLine() != null ) {
String str = br.readLine();
pw.println(str);
pw.flush();
}
}
os.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}