标签:
关于输入流的问题大致分四步:
以下是个人理解
处理IO流的软件相当一个搬运公司,真实文件好比是一间需要搬运的房子(包括房子里的一切).
1.设立代理:
File类建立的对象貌似拥有文件的身份但却不是文件,因为没有内容,就像是一个影子.除了内容,它几乎可以以假乱真.验证,读取大小,设立目录,删除,甚至可以做到创建文件.现实世界中,我能最快想到的符合File身份的一个词,就是代理.
所以,读取文件之前,我们需要给文件在程序中找到一个代理:
文件代理人f先生: File f = new File("房屋地址");
f先生只负责代理,不负责搬运
代码:
// 建立连接
File f = new File("/Users/######/Documents/test.txt");//代理人 f先生
if (!f.exists()) {//创建文件
System.out.println("文件不存在,正在创建");
try {
f.createNewFile();//只是为了验证代理f先生的能力
System.out.println();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件创建失败");
}
}else {
System.out.println("文件已找到");
}
2.建立管道:
Inputstream类产生的对象就是搬运队,这个搬运队里根据业务不同有众多分枝
Inputstream
|---AudioInputStream
|---ByteArrayInputStream
|---FileInputStream-->文件运输队
|---FilterInputStream
|---InputStream
|---ObjectInputStream
|---PipedInputStream
|---SequenceInputStream
|---StringBufferInputStream
因为要搬运的是文件,我们需要一个负责搬运的b先生,b先生虽然是文件运输队的b = new FileInputStream(f);
,但是在此之前我们创建b先生的时候用的却是InputStream b = null;
将b先生声明称一个InputStream抽象类.这里使用的是多态的性质.为了代码的通用性.即我们只需要知道b先生是个搬运工,至于哪个方面的,搬运公司(编译器)决定.
代码:
// 设立管道
InputStream b = null;//管道
try {
b = new FileInputStream(f);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
System.out.println("文件不存在");
}
3.数据装箱
未完...睡觉
标签:
原文地址:http://www.cnblogs.com/maxtree/p/6IO-liu-2016nian10yue07ri010806chuang-jian.html