01 I/O缓存流
1. 用到了之前学的StringBuffer,有些忘记了
String str1 = "let there "; //创建一个字符串
StringBuffer sb = new StringBuffer(str1); //根据str1创建一个StringBuffer对象
StringBuffer sb = new StringBuffer(); //也可以创建一个无参的StringBuffer对象
sb.append("be light"); //在最后追加
sb.delete(4, 10); //删除4-10之间的字符
sb.insert(4, "there "); //在4这个位置插入 there
sb.reverse(); //反转
2. 练习-移除注释
package j2se2.io02;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.PrintWriter;
//要在通过BuffedReader 读取完数据后,才能建立Printwriter,
//因为创建输出流的时候,会把目标文件内容清空
public class BufferedTest01 {
public static void removeComments(File javaFile){
StringBuffer sb = new StringBuffer(); //创建一个字符串变量
//JDK1.7新特性,可以在try的()写输入或输出流,会自动关闭流
try(
FileReader fr = new FileReader(javaFile); //创建一个字符输入流
BufferedReader br= new BufferedReader(fr) //创建一个缓存字符输入流
){
while(true){
String line = br.readLine(); //创建一个字符串接收输入流每行内容
if(null == line) //当有一行为空时读取结束
break;
if(!line.trim().startsWith("//")){ //每行去掉首位空格,然后看是否以//开头
sb.append(line).append("\r\n"); //不是的话,就存到sb中,然后回车换行
}
}
}catch(IOException e){
e.printStackTrace();
}
try(
FileWriter fw = new FileWriter(javaFile); //创建一个字符输出流
PrintWriter pw = new PrintWriter(fw); //创建一个缓存字符输出流
){
pw.write(sb.toString()); //写出内容
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
File javaFile = new File("d:");
System.out.println(javaFile.exists());
System.out.println(javaFile.length());
removeComments(javaFile);
}
}
3.流关系
3.1.流分为字节流和字符流
3.2 字节流下面常用的又有数据流和对象流
3.3字符流下面常用的又有缓存流
常用的16个流:
FileInputStream,FileOutputStream,FileReader,FileWriter.
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter.
DataInputStream,DataOutPutStream,
ObjectInputStream,ObjectOutputStream
InputStreamReader,OutputStreamWriter.
PrintWriter,PrintStream.
4.遇到数组,记录常用方法
import java.util.Arrays;
数组复制 copyOfRange(a,1,2); // a代表源数组,1代表复制起始位置,2代表结束位置,[1,2)
转换成字符串 toString(a); // 把数组a转换成字符串
排序 sort(a); // 将a数组进行排序
搜索 binarySearch(a,23) // 必须先经过sort排序,找出a数组中23的下标
填充 fill(a,1) // 使用1将数组填满