一、流的简单概述
1.流按操作数据分为:字节流、字符流:
2.流按流向分为:输入流、输出流:
字节流的抽象基类:
InputStream、OutputStream;
字符流的抽象基类:
Reader、Writer 南京Java培训
二、创建一个简单流步骤:
1.创建流:
FileWriter fw = new FileWriter("demo.txt");
2.写入流(往流中写入数据);
fw.write("abcd");
3.关闭流
fw.close();
三、读取流创建步骤:
1.创建读取流对象,并关联读取文件;
FileReader fr = new FileReader("demo.txt");
2.调用读取流对象的读取方法;
int ch = 0;
while((ch=fr.read())!=-1)
{
sop((char)ch);
}
3.关闭读取流对象;
fr.close(); 南京Java软件培训
四、字符流的缓冲区:
1.对应缓冲区:
BufferedWriter
BufferedReader
2.缓冲区的出现是为了提高流的操作效率;
所以在创建缓冲区之前,必须要先有流对象;
该缓冲区中提供了一个跨平台的换行符,newLine();
newLine():方法返回的时候只返回回车符之前的数据内容,并不返回回车符。南京Java培训
3.创建写入流步骤:
1.创建写入流对象
FileWriter fw = new FileWriter("buf.txt");
2.将流对象传给缓冲区的构造函数;
BufferedWriter bufw = new BufferedWriter(fw);
3.写入数据; 南京Java软件培训
for(int x=0;x<5;x++)
{
bufw.write("abcd"+x);
bufw.newLine();
//记住,只要用到缓冲区,就要记得刷新。
bufw.flush();
}
4.关闭资源
bufw.close();
五、创建读取流缓冲区步骤:
1.创建读取流对象,并和文件关联
FileReader fr = new FileReader("buf.txt");
2.将流对象传给缓冲区的构造函数;
BufferedReader bufr = new BufferedReader(fr);
3.读取数据:
String line = null;
//当返回null时,表示读到文件末尾
while((line=bufr.readLine())!=null)
{
System.out.println(line);南京Java软件培训
}
4.关闭资源
bufr.close();
六、字节流
》字节流:既可以文字数据,也可以媒体数据
InputStream
OutputStream
二》outputStream调用writer();不用刷新,数据就直接写入目的地;
因为字节是最小单位,不需要缓冲区,不需要任何操作,直接写入。南京Java培训
三》字节流的读取方式有三种;
1.单个字节读取方式;
2.字节数组读取方式;(建议使用)
3.字节流特有的读取方式(available)
此方式慎重使用,如果读取的文件太大,超出了jvm范围,就会内存溢出
七、字节流的缓冲区:南京Java软件培训
BufferedOutputStream
BufferedInputStream
八、File概述:
用来将文件或者文件夹封装成对象;
1.创建File对象有三种方式:
1.File f1 = new File("f:\\abc\\a.txt");
2.File f2 = new File("f:\\abc","b.txt");
3. File d = new File("f:\\abc");
File f3 = new File(d,"c.txt");
九、File类常见方法:
1.创建:
Boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不会创建, 返回false;和输出流不一样,输出流会覆盖以前文件。南京Java培训
Boolean mkdir();创建文件夹;
Boolean mkdirs():创建多级文件夹;
2.删除
Boolean delete();删除失败,返回false
Void deleteOnExit();在程序退出时,删除指定文件;
3.判断
Boolean exists();文件是否存在
Boolean isDirectory();判断是否是目录;
Boolean isFile();判断是否是文件;
Boolean isHidden();判断是否是隐藏文件;
Boolean isAbsolute();是否是绝对路径
4.获取信息
String getName();获取名称
String getpath(); 获取路径;南京Java培训机构
String getParent();获取父目录,
//该方法返回的是绝对路径中的父目录;如果获取的是相对路径,返回null
//如果相对路径中有上一层目录,那么该目录就是返回结果;
String getAbsolutePath();获取绝对路径
Long lastModified();最后一次修改时间。
Long length();获取文件长度
十、Properties概述:
Properties是hashtable的子类:
也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串, 南京Java培训
所以不需要泛型。南京Java培训机构
Properties是集合中和IO技术相结合的集合容器:
该对象的特点,可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式,键=值;
十一、PrintWriter流:
一》打印流:
将流提供了打印方法,可以将各种数据类型的数据都原样打印;
字节打印流:
PrintStream:
构造函数可以接受的参数类型:
1.file对象,File
2.字符串路径。String
3.字节输出流,outputstream 南京Java培训
字符打印流:
PrintWriter:
构造函数可以接受的参数类型:
1.ile对象,File
2.字符串路径。String
3.字节输出流,outputstream
4.字符输出流,Writer