您的位置:首页 > 职场人生

黑马程序员——Jave IO流一

2015-01-13 23:45 120 查看
------- android培训java培训、期待与您交流! ----------

1.File类
(1)IO流其实就是做文件的上传和下载操作的,而对文件的描述,java提供的对应的类是File。
(2)构造方法:
A:File file = new File("d:\\a.txt");
B:File file = new File("d:\\","a.txt");
C:File file = new File("d:\\");
 File file2 = new File(file,"a.txt");
(3)成员方法:
A:创建功能
createNewFile()
mkdir()   创建单级目录
mkdirs()  创建多级目录
B:删除功能
delete()
C:重命名功能
renameTo()
D:判断功能
exists()      是否存在
isFile()      是否文件
isDirectory() 是否文件夹
E:基本获取功能
getAbsolutePath()   获取绝对路径
getPath()           获取相对路径
路径问题:
相对路径:不以盘符开始。默认在项目路径下。
绝对路径:就是以盘符开始。
getName()
length()
F:高级获取功能
list()
listFiles()
G:文件名称过滤器
FilenameFilter
示例:
/*
* 输出d:\\demo目录下所有.java文件的绝对路径名称。
* A:封装目录
* B:获取指定目录下所有文件和文件夹的File数组。
* C:遍历File数组,获取每一个File对象。
* D:判断该File对象是否是文件:
* 是:继续判断是否以.java结尾。
* 是:输出该文件的绝对路径。
*/
public class FileDemo {
public static void main(String[] args) {
// 封装目录
File srcFile = new File("d:\\demo");
// 获取指定目录下所有文件和文件夹的File数组。
File[] fileArray = srcFile.listFiles();
// NullPointerException
for (File file : fileArray) {
// 判断该File对象是否是文件:
if (file.isFile()) {
// 继续判断是否以.java结尾。
if (file.getName().endsWith(".java")) {
// 输出该文件的绝对路径。
System.out.println(file.getAbsolutePath());
}
}
}
}
}

2.递归
(1)方法定义中调用方法本身的现象。
(2)递归的注意事项:
A:递归一定要有出口,否则就是死递归。
B:递归次数不能太多,否则内存溢出。
C:构造方法不能递归调用。

示例:
/*
* 有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
* 问每个月的兔子对数为多少? 
* 第二十个月?

* 兔子对数
* 第一月:
1
* 第二月:
1
* 第三月:
2
* 第四月:
3
* 第五月:
5
* 第六月:
8
* ...
* 看规律:(斐波那契数列)
* 1,1,2,3,5,8...
* 规律:
* 规律:从第3项开始,每一项是前两项之和。
* 出口:第一项和第二项是已知道的。
*/
public class RabbitDemo {
public static void main(String[] args) {
// 用递归实现
System.out.println(fun(20));
}
//假设我有一个功能fun(n)表示第n项。 请问,第n-1项和第n-2项怎么表示: fun(n-1),fun(n-2)
 
public static int fun(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fun(n - 1) + fun(n - 2);
}
}
}

3.IO流
(1)IO流的分类
A:流向分(要站在Java程序的角度)
输入流 读取数据
输出流 写出数据
B:数据类型
字节流
字节输入流
字节输出流
字符流
字符输入流
字符输出流

4000
注意:
a:一般来说,如果没有说是按照什么分,默认指按照数据类型分。
b:什么时候用字符流?什么时候用字节流?
把要操作的文件用记事本打开,如果能够读懂里面的内容,就用字符流。
否则用字节流。如果你不知道,用字节流。
(2)IO流的体系结构:
字节流:
字节输入流 InputStream
FileInputStream
BufferedInputStream
字节输出流 OutputStream
FileOutputStream
BufferedOutputStream
字符流:
字符输入流 Reader
FileReader
BufferedReader
字符输出流 Writer
FileWriter
BufferedWriter
(3)FileWriter写出数据
字符输出流操作步骤:
A:创建字符输出流对象。
B:调用write()方法
C:释放资源。

代码体现:
FileWriter fw = new FileWriter("fw.txt");
fw.write("hello,IO,我来了");
fw.flush();
fw.close();

有关FileWriter写出数据的小问题:
A:创建FileWriter对象做了几件事情?
FileWriter fw = new FileWriter("fw.txt");
B:字符流写出数据,为什么要flush()?
因为数据在缓冲区
C:字符流操作完毕后,为什么要close()?
防止还有数据在缓冲区,将对象变为垃圾,通知系统释放相关资源。
D:flush()和close()的区别?
flush():刷新缓冲区。流对象可以继续使用。
close():先刷新缓冲区,后释放资源。流对象不可以继续使用。
E:如何实现数据的换行?
\r\n
F:如何实现数据追加写入?
第二个构造参数:true
(4)FileReader读取数据
字符输入流操作步骤:
A:创建字符输入流对象。
B:调用read()方法,把数据显示。
C:释放资源。
代码体现:
FileReader fr = new FileReader("fw.txt");
//方式1
int ch = 0;
while((ch=fr.read())!=-1) {
System.out.print((char)ch);
}
//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1) {
System.out.print(String.valueOf(chs,0,len));
}
fr.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: