输出流
- 字节输出流OutputStream 将内容输出到文件中
2. 用下面提供的方法可以不覆盖之前的文件内容,而是追加文件内容
3. 流操作使用后要关闭(放在finally代码块中)
File file = new File("C:\\Users\\XXX\\Desktop\\tstIO.txt");
OutputStream outputStream = new FileOutputStream(file,true);
outputStream.write("hello world\n".getBytes());
outputStream.close();
- 字符输出流,Writer:
1. 字符流在输出到存储设备时,中间会有一个缓冲区,要用flush()或者close()方法将其实时写入到存储设备
Writer writer = new FileWriter(file,true);
writer.write("这是一个测试字符输入流");
writer.flush();
输入流
- InputStream字节输入流,将内容读取。
1. 下面len这个变量是指data这个数组使用的长度(如果读取的内容小于1024字节,那么len就是对应的字节长度
File file = new File("C:\\Users\\XXXX\\Desktop\\tstIO.txt");
InputStream inputStream = new FileInputStream(file);
byte[] data = new byte[1024];
int len = inputStream.read(data);
String str = new String(data, 0, data.length);
System.out.println(str);
inputStream.close();
- Reader,字符输入流
Reader reader = new FileReader(file);
char[] data = new char[4];
int len;
String str = "";
String temp = "";
while ((len = reader.read(data)) != -1){
temp = new String(data, 0, len);
str = str + temp;
}
实现文件复制的操作
public static void fileCopy(File file1, File file2) throws IOException {
if(!file1.exists()){
throw new IllegalArgumentException("非法输入");
}
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new FileInputStream(file1);
outputStream = new FileOutputStream(file2);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] data = new byte[4096];
int len;
while ((len = inputStream.read(data)) != -1){
outputStream.write(data,0,len);
}
}
BufferedReader类
1. 创建该类的实例对象
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
2. 该类的一些实用方法(讲一个文件按照行来读取,可用于文件行数的统计)
String str = "";
while ((str = bufferedReader.readLine()) != null) {
}
3. 可通过第二个方法来统计我们的代码行数,详情见上上篇博客;