字符缓冲流
-
缓冲流:BufferedReader/BufferedWriter
-
高效读写
-
支持输入换行符
-
可一次写一行,读一行
-
BufferedWriter
-
/** * 演示BufferedWriter */ public class demo6 { public static void main(String[] args) throws Exception{ //创建BufferedWriter FileWriter fw=new FileWriter("e:\\IO流\\buffer.txt"); BufferedWriter bw=new BufferedWriter(fw); //写入 for (int i = 0; i <10 ; i++) { bw.write("好好学习,天天向上"); bw.newLine();//写入一个换行符windows \r\n linux \n bw.flush(); } //3关闭 bw.close(); System.out.println("执行完毕"); } }
-
打印流
-
PrintWriter:
- 封装了print() / printIn() 方法,支持写入后换行
- 支持数据原样打印
/** * 演示PrintWriter */ public class demo7 { public static void main(String[] args) throws Exception { //1创建打印流 PrintWriter pw=new PrintWriter("e:\\IO流\\print.txt"); //2打印 pw.println(97); pw.println(true); pw.println(3.14); pw.println('a'); //3关闭 pw.close(); System.out.println("执行完毕"); } }
转换流
-
桥转换流: InputStreamReader / OutpurStreamEriter
- 可将字节流转换为字符流
- 可设置字符的编码方式
/** * 使用OutpurStreamWriter */ public class demo2 { public static void main(String[] args)throws Exception { //1创建OutputStreamWriter FileOutputStream fos=new FileOutputStream("e:\\IO流\\info.txt"); OutputStreamWriter osw=new OutputStreamWriter(fos,"gbk"); //写入 for (int i = 0; i < 10; i++) { osw.write("我爱北京,我爱故乡\r\n"); osw.flush(); } //3关闭 osw.close(); System.out.println("执行完毕"); } }
File类
-
概念:代表物理盘符中的一个文件或者文件夹
-
方法
- createNewFile() //创建一个新文件
- mkdir() //穿件一个新目录
- delete() //删除文件或空目录
- exists() //判断File对象所代表的UI想是否存在
- getAbsolutePath() //获取文件的绝对路径
- getName() //取得名字
- getParent() //获取文件/目录所在的目录
- isDirectory() //是否是目录
- isFile() // 是否是文件
- length() //获得文件的长度
- listFiles() //列粗目录中的所有内容
- renameTo()//修改文件名为
/** * File类的使用 * (1) 分隔符 * (2) 文件操作 * (3) 文件夹操作 */ public class demo1 { public static void main(String[] args)throws Exception { // separator(); fileOpe(); } //(1)分隔符 public static void separator(){ System.out.println("路径分隔符"+ File.pathSeparator); System.out.println("名称分隔符"+File.separator); } //(2)文件操作 public static void fileOpe() throws Exception{ //1创建文件 createNewFile() File file=new File("e:\\IO流\\file.txt"); // System.out.println(file.toString()); if (!file.exists()) { boolean b = file.createNewFile(); System.out.println("创建结果" + b); } //2删除文件 //2.1直接删除 // System.out.println("删除结果"+file.delete()); //2.2使用JVM退出时删除 // file.deleteOnExit(); // Thread.sleep(5000); //3获取文件信息 System.out.println("获取文件的绝对路径"+file.getAbsolutePath()); System.out.println("获取路径:"+file.getPath()); System.out.println("获取文件名称"+file.getName()); System.out.println("获取父目录"+file.getParent()); System.out.println("获取文件长度"+file.length()); System.out.println("文件创建时间"+new Date(file.lastModified())); //4判断 System.out.println("是否可写"+file.canWrite()); System.out.println("是否时文件"+file.isFile()); System.out.println("是否隐藏"+file.isHidden()); } ```### FileFilter接口
-
Public interface FileFileter
- boolean accept(File pathname)
-
当调用File类中的listFiles()方法时,支持传入FIleFileter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可以出现在ListFile()的返回值中
System.out.println("---------FileFilter接口的使用--------------------");
File[] files2=di2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".txt")){
return true;
}
return false;
}
});
for (File file: files2) {
System.out.println(file.getName());
}
递归遍历文件夹
/**
* 案例1 递归遍历文件夹
* 案例2,递归删除文件夹
*/
public class LIstDemo {
public static void main(String[] args) {
// listDiDir(new File("E:\\桌面"));
deleteDir(new File("E:\\IO"));
}
public static void listDiDir(File dir){
File[] files=dir.listFiles();
System.out.println(dir.getAbsolutePath());
if (files!=null && files.length>0){
for (File file: files) {
if (file.isDirectory()){
//递归
listDiDir(file);
}else {
System.out.println(file.getAbsolutePath());
}
}
}
}
//案例2,递归删除文件夹
public static void deleteDir(File dir){
File[] files=dir.listFiles();
if (files!=null&&files.length>0){
for (File file: files) {
if (file.isDirectory()){
deleteDir(file);//递归
}else {
//删除文件
System.out.println(file.getAbsolutePath()+"删除"+file.delete());
}
}
}
System.out.println(dir.getAbsolutePath()+"删除"+dir.delete());
}
}
Properties
-
properties:属性集合
-
特点
- 存储属性名和属性值
- 属性名和属性值都是字符串类型
- 没有泛型
- 和流有关
/** *演示Properties集合的使用 */ public class demo2 { public static void main(String[] args) throws Exception { //1创建集合 Properties properties=new Properties(); //2添加数据 properties.setProperty("username","zhangsan"); properties.setProperty("age","20"); System.out.println(properties.toString()); //3遍历 //3.1-----keySet----- //3.2-----entrySet---- //3.3-----stringPropertyNames()----- Set<String> proname=properties.stringPropertyNames(); for (String pro:proname) { System.out.println(pro+"==="+properties.getProperty(pro)); } //4和流有关的方法 //-----------list方法--------- // PrintWriter pw=new PrintWriter("e:\\IO流\\print.txt"); // properties.list(pw); // pw.close(); //---------2store方法保存=---------- FileOutputStream fos=new FileOutputStream("E:\\IO流\\store.properties"); properties.store(fos,"注释"); fos.close(); //----------3load方法加载------------- Properties properties2=new Properties(); FileInputStream fis=new FileInputStream("E:\\IO流\\store.properties"); properties2.load(fis); fis.close(); System.out.println(properties2.toString()); }
总结
- 流的概念
- 内存与存储设备之间传输数据的通道
- 流的分类
- 输入流、输出流;字节流、字符流;节点流、过滤流;
- 序列化、反序列化
- 将对象通过流写入到文件,或将对象通过流读取到内存,必须实现Serializable接口
- File对象
- 代表物理盘符中的一个文件或者文件夹
转载:https://blog.csdn.net/zq140311/article/details/115496047
查看评论