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{

    @Override
    public void color() {
        System.out.println("绿色");
    }

    @Override
    public void run() {
        System.out.println("每秒跑1米");
    }

    @Override
    public String jiayou(String you) {
        return "车要加"+you;
    }
}
public class QQWapper implements Car{
    private QQCar qqCar;

    public QQWapper(QQCar qqCar) {
        this.qqCar = qqCar;
    }

    @Override
    public void color() {
        System.out.println("彩色");
    }

    @Override
    public void run() {
        System.out.println("每秒跑1万米");
    }

    @Override
    public 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学完了,下面学习多线程。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算债券的溢折价需要考虑债券的面值、市场利率、票面利率、剩余期限等因素。以下是一个使用Java代码计算溢折价的示例: ```java public class Bond { private double faceValue; // 面值 private double couponRate; // 票面利率 private double marketRate; // 市场利率 private int remainingYears; // 剩余年限 public Bond(double faceValue, double couponRate, double marketRate, int remainingYears) { this.faceValue = faceValue; this.couponRate = couponRate; this.marketRate = marketRate; this.remainingYears = remainingYears; } public double getDiscountRate() { return (faceValue - getPrice()) / (faceValue * remainingYears); } public double getPrice() { double couponPayment = faceValue * couponRate; double discountFactor = 0; for (int i = 1; i <= remainingYears; i++) { discountFactor += 1 / Math.pow(1 + marketRate, i); } return couponPayment * discountFactor + faceValue / Math.pow(1 + marketRate, remainingYears); } public static void main(String[] args) { Bond bond = new Bond(1000, 0.08, 0.1, 5); double price = bond.getPrice(); double discount = bond.getDiscountRate(); System.out.println("价格:" + price + ",溢折价率:" + discount); } } ``` 在这个示例中,我们定义了一个Bond类,其中包含了面值、票面利率、市场利率和剩余年限等属性,以及计算价格和溢折价率的方法。在main方法中,我们创建了一个Bond对象,并计算出价格和溢折价率。输出结果为: ``` 价格:926.9251298840451,溢折价率:0.07307487011595492 ``` 这表示该债券的价格为926.93元,溢折价率为7.31%。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值