----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
首先写点学习的笔记:
IO流:
输入流和输出流是相对一内存设备而言的;
将外设的数据读入内存 就是输入流;
将内存中数据写入外围设备就是输出流
1、为什么使用字符流?
字节流使用的ASCII表,然后再这个基础上不同的地区在这上面又有了unicode编码表
字符流其实 就是字节流和编码表的合体,字节流读取文字字节数据后,不直接操作而是
先查指定的编码表,转换成对应的文字,在对这个文字进行操作。
字节流的两个顶层父类:
1、InputStream 2、OutputStream
字符流的两个顶级父类:
1、Reader 2、Writer
注意:有这四个派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream
如:Reader的子类FileReader
记住:如果要操作文字,优先考虑字符流;以为他就是因为它出现的
Writer 的子类
FileWirter:
创建一个FileWriter对象,该对象一被初始化就要明确被操作的文件
而且该文件会被创建到指定的目录下,如果该目录下已经存在了同名文件,则将会被覆盖
其实写入数据是调用系统的方法,java不带,linux和windows的写入文件的方法不一样!子要是读和写的操作都有可能发生IO异常!
Reader 的子类:
FileReader:
创建一个文件读取流对象,和指定的名称的文件相关联。
要保证该文件是已经存在的,如果不存在,会发生FileNotFoundException异常
读取方式第一种:read()方法
读取的第二种方法:read(字符数组)
最后注意: 流对象----->在外边创建引用,在try里面初始化;
打开流必须关闭流,不然占用资源;
实现复制文件的代码:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileCopy {
/**
* 把D盘下的文件复制到E盘下面
*
* 步骤:
* 1、创建一个文件,用于存放复制的数据
* 2、定义读取流和磁盘中要复制的文件关联
* 3、通过不断的读写完成操作
* 4、关闭流
* @param args
*/
public static void main(String[] args) {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter("f:\\Copytest.txt");
fr = new FileReader("d:\\demo.txt");
char buf [] = new char[1024];
int num = 0;
while((num=fr.read(buf))!=-1){
fw.write(buf);
}
} catch (Exception e) {
throw new RuntimeException("读取失败");
}finally{
try {
if(fr!=null){
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fw!=null){
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------