Java IO 文本数据
列出的为较为常用的相关知识,因为我也是一名小白,所以希望能够通过博客来督促自> 己学习,若有错误请联系我!!!希望能够一起共同进步,共同成长!
字符流:
java.io.Reader
java.io.Writer
上述两个类是所有字符流的超类,规定了所有字符流都必须具备的读写字符的相关方法。
java将流按照读写单位划分为字节流与字符流
字节流以char为单位读写数据,但是底层本身还是读写字节,只是字符与字节的转换字符流自行完成。
转换流:
java.io.InputStreamReader
java.io.OutputStreamWriter
转换流是一对字符流,同时他们也是高级流,在实际开发时我们通常不会直接操作这两个流,但是在读写文本数据时,流连接中他们时非常重要的,负责衔接其他字符高级流与字节流。
写数据:
FileOutputStream fos = new FileOutputStream("./xxx.xx");
OutputStreamWrite osw = nw OutputStreamWrite(fos,"UTF-8"); // 转换流在创建时会传入第二个参数,这个参数用来指定
// 字符集,这样以来通过当前流写出的文本都会按照字符
// 集转换为字节后写出。
osw.write("xxxxxxxxxxx.");
osw.close();
读数据:
FileInputStream fis = new FileInputStream("./xxxx.xx");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
// 按照字节快读取数据
char[] data = new char[100];
int len = isr.read(data);
String str = new String(data,0,len);
System.out.println(str)
// 按照字符读取
int d=-1;
while((d = isr.read()) != -1){ // 每次读取一个字符
System.out.print((char)d);
}
缓冲字符流
java.io.BufferedWriter
java.io.BufferedReader
缓冲流是快读写文本数据,提高读写效率,并且可以按行读写字符串
java.io.PrintWriter - 高级流
具有自动行刷新的缓冲字符输出流,内部总是连接BufferedWriter作为其缓冲加速操作。
写 - 使用:
// 直接使用
PrintWriter pw = new PrintWriter("./xxx.xx","UTF-8");
PrintWriter pw = new PrintWriter(File file,"UTF-8");
// 间接使用
FileOutputStream fos = new FileOutputStream("./"+fileName+".txt");
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw,true); // 当第一个参数是流时,第二个参数是一个boolean值,为true就打开了
// 自动刷新功能。每当调用println方法就会写出一行字符(自动执行flush)
pw.println("xxxxxxxxx.");
pw.close();
读 - 使用:
FileInputStream fis = new FileInputStream("./"+fileName+".txt");
InputStreamReader isw = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isw);
br.readLine(); // 读取一行
String line = null;
while((line = br.readLine()) != null){
System.out.print(line);
}
br.close();