萌新学Java之初入门径十----流

装饰者模式(解耦 不让类和类产生继承的关系)

对 对象的原有功能进行升级

书写步骤:

  • 1.明确被装饰的对象
  • 2.将被修饰的对象 通过构造方法传入 装饰类
  • 装饰类中 肯定有 一个成员变量 就是被装饰的对象
  • (拥有被装饰的对象 相当于可以调用该对象中的所有方法)

例:

//学习的接口
interface Study{
void study();
}

//在校学生
class Student implements Study{
@Override
public void study() {
// TODO Auto-generated method stub
System.out.println(“在校学习了C C++ C#”);
}
}

//装饰类
class LOStudent implements Study{
//将被装饰者声明为成员变量
private Student student;
//提供有参的构造方法
public LOStudent() {
// TODO Auto-generated constructor stub
}
public LOStudent(Student student) {
super();
this.student = student;
}
//对方法进行装饰(升级)
@Override
public void study() {
// TODO Auto-generated method stub
//调用原有的学习方法
student.study();
//装饰新功能
System.out.println(“学习Java H5 U3D”);
}
}
public static void main(String[] args) {
Student student = new Student();
LOStudent loStudent = new LOStudent(student);
loStudent.study();
}

LineNumberReader

File file = new File("/Users/lanou/Desktop/Test/登鹳雀楼.txt");
FileReader frFileReader = new FileReader(file);
LineNumberReader lnr = new LineNumberReader(frFileReader);
//设置行号(默认从100开始)
lnr.setLineNumber(100);
String string = null;
while ((string = lnr.readLine()) != null) {
System.out.println(lnr.getLineNumber() + " : " + string);
}
lnr.close();

打印流

  • 1.永远不会抛出IO异常
  • 2.原样输出到目的端
  • PrintStream 字节流
  • 构造方法: 字符串路径 文件对象 字节流对象
  • PrintWriter 字符流
  • 构造方法:字符串路径 文件对象 字符流对象 字符流对象
  • 注意:只有操作流对象 才能自动刷新

例:

FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Test/抽象圣经.txt");
PrintStream ps = new PrintStream(fos);
//写文件
ps.println(“那是真的牛皮”);
ps.print(“NM$L”);
ps.close();

FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Test/抽象圣经.txt");
PrintWriter pw = new PrintWriter(fos,true);
//写文件
pw.println(“那是真的牛皮”);
pw.print(“NM$L”);
pw.println(“深海哥你来啦!”);
pw.close();

合并流

  • SequenceInputStream
  • 作用:可以将多个文件合并成一个新的文件
    例:
    //合并文件

File file1 = new File("/Users/lanou/Desktop/Copy/1.txt");
File file2 = new File("/Users/lanou/Desktop/Copy/2.txt");

	FileInputStream fis1 = new FileInputStream(file1);
	FileInputStream fis2 = new FileInputStream(file2);
	//创建合并流
	SequenceInputStream sis = new SequenceInputStream(fis1, fis2);
	
	//写入到新的文件中
	FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Copy/4.txt");
	//读写
	int len = 0;
	while ((len = sis.read()) != -1) {
		fos.write(len);
	}
	//关闭流
	sis.close();
	fos.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值