今天需要从文本文件里读出内容,从一刚开始就独立编写,结果是这个样子。
private static String getText0() {
File txt = new File("src/regex/Test");
InputStream is;
StringBuffer sb = new StringBuffer();
Reader reader = null;
try {
is = new FileInputStream(txt);//输入流
reader = new InputStreamReader(is, "UTF-8");//以utf-8读取输入流
char[] charBuffer = new char[30];//数组存储一个个字节
int c;//在while循环判断时,会消耗一个字节,用这个暂存。
while((c= reader.read())!=-1) {//这个地方会消耗一个字节
reader.read(charBuffer);//暂存到字节数组
sb.append((char)c).append(charBuffer);
c=0;//清除数据,防止判断时出问题
charBuffer = new char[30];//清除数据,防止判断时出问题
}
reader.close();
is.close();
System.out.println(sb);
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
看以上代码,有点拖沓,在网上看到了FileReader,然后用了一把。
private static String getText1() {
File file = new File("src/regex/Test");
try {
//FileReader fr = new FileReader(file);//准备资源,其实代码可以不用下面的BufferedReader,但是,FileReader没什么好用的读取方法,只能像上面的那个方法读取。
//上面的代码修正为以下内容,原因是FileReader总是默认用当前平台的编码方式读取,而且不能改
InputStreamReader isr = new InputStreamReader(file,"UTF-8");
BufferedReader br = new BufferedReader(isr);//而有这个,可以一行一行的读,比较方便
//总感觉读取文件要new这么大一堆有点怪怪的
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {//同样的,用于判断的那一行,如果不存储就会丢失
sb.append(line);
}
br.close();
fr.close();
System.out.println(sb);
} catch ( Exception e) {
e.printStackTrace();
}
return null;
}
这就是我的一点笔记