当前位置: 首页 > news >正文

JAVA(IO流)7.31

ok了家人们今天还是学习IO流,

.打印流【了解】

1.1 打印流的概述

我们平时使用的System语句就是调用了print()方法和println()方法。

这两个方法都来自于 java.io.PrintStream 类。
作用:
该类能够方便地打印各种数据类型的值,写入数据后可以实现自动
换行。
通常用于日志记录

1.2 打印流的构造方法

public PrintStream(String fileName) : 使用指定的文件名创建一个新
的打印流PrintStream ps = new PrintStream("ps.txt");
1.3 打印流的使用
PrintStream ps = new PrintStream("ps.txt");ps.println(100);
ps.println(true);
ps.println(你好);
ps.println(HelloWorld);

.装饰者设计模式

设计模式就总结出来的一套解决开发中各类问题现成方案(固定套
路)
装饰者设计模式:在不改变原类 , 不使用继承的基础上,动态地扩展
一个对象的功能。
装饰模式遵循原则 :
装饰类和被装饰类需要有共同的父类型 ( 接口 )
在装饰类中必须传入被装饰类的对象
在装饰类中对需要扩展的方法进行扩展
在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
public interface Car {void color();void run();String jiayou(String you);
}
public class QQCar implements Car{@Overridepublic void color() {System.out.println("绿色");}@Overridepublic void run() {System.out.println("每秒跑1米");}@Overridepublic String jiayou(String you) {return "车要加"+you;}
}
public class QQWapper implements Car{private QQCar qqCar;public QQWapper(QQCar qqCar) {this.qqCar = qqCar;}@Overridepublic void color() {System.out.println("彩色");}@Overridepublic void run() {System.out.println("每秒跑1万米");}@Overridepublic String jiayou(String you) {return jiayou(you);}
}
public class CarTest {public static void main(String[] args) {QQCar qqCar = new QQCar();QQWapper qqWapper = new QQWapper(qqCar);qqWapper.color();qqWapper.run();}
}
扩展:方法增强的多种方式
继承 : 子类继承父类 , 重写父类中的方法 , 对方法进行增强 装饰模式 ( 装饰者模式 )
动态代理 : 在不修改源码的基础上实现方法的增强
//字符输入缓冲流: BufferedReader     特点:提高读的效率
情况:在使用FileReader类时,发现读的效率低,希望提高效率
//不能修改FileReader类、不能继承FileReader类 ,要对
read(char[] cbuf)方法进行增强
//使用装饰者模式解决:装饰类:  BufferedReader被装饰类: FileReader//装饰类     具有相同的父类型
public class BufferedReader extends Reader{//被装饰类private FileReader fileReader;//构造方法public BufferedReader(){}public BufferedReader(FileReader fileReader){//接收
被装饰类的对象this.fileReader = fileReader;}public BufferedReader(FileReader fileReader , int
size){this.fileReader = fileReader;this.size = size;}//成员变量private int size = 1024*8;//缓冲区对象char[] cbuf = new char[size];//重写read()方法public int read(){....read(cbuf);}//重写read(char[] cbuf)方法public int read(char[] cbuf){.......}//重写相关方法public void close(){fileReader.close();//调用原有功能}
}    
//多态
Reader  read = new BufferedReader( new FileReader("关联
文件") );

.commons-io工具包

3.1commons-io 工具包的使用
public static int copy(InputStream in, OutputStream out); 把
input输入流中的内容拷贝到output输出流中,返回拷贝的字节个数
(适合文件大小为2GB以下)
public static long copyLarge(InputStream in, OutputStream
out);把input输入流中的内容拷贝到output输出流中,返回拷贝的
字节个数(适合文件大小为2GB以上)
public static void copyFileToDirectory(final File srcFile, final File
destFile) //复制文件到另外一个目录下。public static void copyDirectoryToDirectory( file1 , file2 );//复制
file1目录到file2位置。
import org.apache.commons.io.IOUtils;import java.io.*;public class Work {public static void main(String[] args) throws Exception {//public static int copy(InputStream in, OutputStream out); 把//input输入流中的内容拷贝到output输出流中,返回拷贝的字节个数//(适合文件大小为2GB以下)InputStream src = new FileInputStream("D:\\20_IO流(四).pdf");OutputStream dest = new FileOutputStream("java_0730\\IO.txt");IOUtils.copy(src,dest);}
}
import org.apache.commons.io.FileUtils;import java.io.File;
import java.io.IOException;public class FileTEST {public static void main(String[] args) throws IOException {File src = new File("D:\\笔记资料");File dest = new File("D:\\1");FileUtils.copyDirectoryToDirectory(src,dest);}
}

ok了io学完了,下面学习多线程。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 声临其境!体验阿里云开源音频基座大模型——FunAudioLLM
  • 【LeetCode】33.搜索旋转排序数组
  • Vue学习(三)条件渲染、列表渲染
  • Linux--shell脚本语言—/—<1>
  • 【C++学习第19天】最小生成树(对应无向图)
  • 数据分析_01_Python基础
  • 【C++】一堆数组案例 元素逆置
  • 自定义线程池(二)
  • 【带你入门生信】什么是生物信息学
  • [Linux安全运维] Nginx安装部署以及LNMP框架搭建保姆级教程
  • 基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)
  • C语言--函数
  • 【dijkstra】迪杰斯特拉算法 洛谷 P1828例题代码讲解
  • C++与云计算的融合:构建高效、可扩展的云服务
  • 逻辑推理之lora微调
  • [译]前端离线指南(上)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 3.7、@ResponseBody 和 @RestController
  • ES10 特性的完整指南
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JSONP原理
  • KMP算法及优化
  • mac修复ab及siege安装
  • MySQL几个简单SQL的优化
  • Python学习之路13-记分
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue.js框架原理浅析
  • Vue2.x学习三:事件处理生命周期钩子
  • 基于组件的设计工作流与界面抽象
  • 蓝海存储开关机注意事项总结
  • 详解移动APP与web APP的区别
  • 消息队列系列二(IOT中消息队列的应用)
  • PostgreSQL之连接数修改
  • 如何正确理解,内页权重高于首页?
  • ​​​​​​​​​​​​​​Γ函数
  • ​决定德拉瓦州地区版图的关键历史事件
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (~_~)
  • (1)(1.11) SiK Radio v2(一)
  • (MATLAB)第五章-矩阵运算
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (一)Java算法:二分查找
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • *Django中的Ajax 纯js的书写样式1
  • .aanva
  • .cn根服务器被攻击之后
  • .describe() python_Python-Win32com-Excel
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net图片验证码生成、点击刷新及验证输入是否正确