Java I/O流之使用缓冲流Buffer读写文件
读文件
如何打开文件获取输入流
方法一:使用File对象
File file = new File("hello.txt");
FileInputStream is= new FileInputStream(file);
方法二:使用类加载器从类路径下读取文件
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName);
if(is == null) {
System.out.println("文件不存在!");
}
创建BufferReader对象
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
注:这里InputStreamReader是一个转换流,可以将字节流转换为字符流。
读取文件内容
String row = null;
// 按行读取
while ((row = reader.readLine()) != null) {
System.out.println(row);
}
整体代码
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName);
if(is == null) {
System.out.println("文件不存在!");
return;
}
BufferedReader reader = null;
String row = null;
try {
reader = new BufferedReader(new InputStreamReader(is));
// 按行读取
while ((row = reader.readLine()) != null) {
System.out.println(row);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
写文件
BufferedWriter bufferedWriter = null;
try {
// 输出文件路径
File file = new File(filename); // 相对路径是相对于当前工程的
bufferedWriter = new BufferedWriter(new FileWriter(file));
bufferedWriter.write("Hello World!");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}