JAVA(IO流)7.31

news2024/11/24 16:37:37

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒商城实战笔记-115-全文检索-ElasticSearch-进阶-bool复合查询

文章目录 1,must2,must not3,should 1,must {"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill&q…

java代码审计-SQL的注入

0x01 前言 Java里面常见的数据库连接方式有三种,分别是JDBC,Mybatis,和Hibernate。 0x02 JDBC注入场景 很早之前的Javaweb都是用JDBC的方式连接数据库然后去实现dao接口再调service业务层去实现功能代码JDBC连接代码 WebServlet("/d…

科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”

科技云报道原创。 从文生文到文生图,再到文生视频,近年来,以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初,Sora横空出世验证了Scalling Law在视频生…

计算机的错误计算(五十)

摘要 扩展了计算机的错误计算(四十九)中的代码。同时发现,误差也“扩展”了。 下面是代码: import torch# 设置随机种子 torch.manual_seed(0)# 创建张量并移动到GPU W1 torch.randn(5, 3) * 10 W1 W1.to(cuda) X1 torch.ran…

高级宏定义

平时常说的 C 语言三大预处理功能是什么?(吹牛谈资,不能不知) 答:宏定义;文件包含;条件编译。 说到底,宏定义的实质是什么? 答:替换。 关于宏定义有一点…

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效 先发图,再说话: 案例图片 案例分析 按钮是好几种颜色的背景色组成的,使用css的话,应该会有几个不同颜色的层,在按钮后面移动。每个层互相叠加,大概还会用到图片混合模式产生了更多的叠加的颜色,然后边缘过…

云计算实训20——mysql数据库安装及应用(增、删、改、查)

一、mysql安装基本步骤 1.下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3.卸载mariadb yum -y remove mariadb 查看解压后的包 [rootmysq…

二叉树遍历算法的应用

1、二叉树的创建 2、二叉树的复制 3、二叉树的深度 4、计算结点总个数

jsp 自定义taglib

一、简介 我们在javaWeb开发中,经常会用到jsp的taglib标签,有时候并不能满足我们的实际需要,这就需要我们自定义taglib标签, 二、开发步骤 1、编写control方法,继承BodyTagSupport 2、定义zdytaglib.tld标签文件 3、…

AI Agent 如何入门?来看看这本新书!!!

半个月前,粗心的我细心地发现,有一本关于 Agent 的书籍,作者还是熟悉的咖哥(黄佳老师,当年拜读过他的《零基础学机器学习》)。 而在昨天,我终于收到了!立刻花了半个小时品读起来~觉…

LeetCode 572.另一棵树的子树 C写法

LeetCode 572.另一棵树的子树 C写法 思路🧐: 可以用上判断两棵树是否相同的方法,root的每个结点都去与subroot进行该方法的比较,如果有一轮比较成功就表示root包含subroot。 代码🔎: bool isSameTree(struc…

【时时三省】(C语言基础)函数的声明和定义

山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 函数声明 1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。 2.函数的声明一般出现在函数的使用之前。要满足先声…

视频监控汇聚平台LntonCVS安防管理平台构建互联网视频监控安全管理系统方案

随着互联网和人工智能技术的发展,我们致力于建设一种云端平台,统一整合各类二三类视频资源,实现对网络工程最后100米、10米甚至1米的全域覆盖。 依托互联网与VPN网络,我们提供了一种视频监控安全管理系统方案,集成了大…

SpringSecurity+Mysql数据库实现用户安全登录认证

Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式,还是响应式web应用程序都完美支持,现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说,SpringSecurity功能更加复杂而且更加强…

深入浅出:可视化理解揭示决策树与梯度提升背后的数学原理

决策树是一种非参数的监督学习算法,可用于分类和回归。它使用类似树的结构来表示决策及其潜在结果。决策树易于理解和解释,并且可以轻松地进行可视化。但是当决策树模型变得过于复杂时,它不能很好地从训练数据中泛化,会导致过拟合…

64、ELK记录nginx、httpd、mysqld日志

logstash收集服务日志文件 一、logstash收集appache日志文件,转发到elasticsearch 1、建立在elk1、2、3搭建好elk架构基础之上192.168.168.61 es1 2/4g192.168.168.62 es2 2/4g192.168.168.63 logstash kibana nginx/http 4/8g三台开启服务systemctl s…

《数据结构》(C语言版)第1章 绪论(上)

第1章 绪论 1.1 数据结构的研究内容1.2 基本概念和术语 1.1 数据结构的研究内容 N.沃思(Niklaus Wirth)教授提出: 程序算法数据结构 电子计算机的主要用途 早期:主要用于数值计算 后来:非数值计算,复杂的具有一定结构…

Gstreamer配合srs服务器实现RTMP直播和WebRtc直播

前言 上一篇文章,实现了配合腾讯云直播的推流,但是需要花钱,于是就在思考能不能搞一个局域网内,免费的RTMP直播呢? 最终发现了可以使用srs服务器。如果成功了,以后也可以使用webrtc的直播推流。 以下是实现效果: 一、搭建srs服务器: 参考:ubuntu环境下搭建SRS服务器(…

windows系统关闭开机自检硬盘

效果: 注册表关闭开机硬盘自检,你可以按照以下步骤操作: 打开注册表编辑器: 按 Win R 键打开“运行”对话框。输入 regedit 并按回车,打开注册表编辑器。 定位到自检相关的键: 依次展开以下路径&#x…

认识经典蓝牙

现在BLE很流行,本人接触BLE也更多,而对经典蓝牙BR/EDR的开发知之甚少,而且网上关于经典蓝牙的资料也很少,所以,想要有更多了解。 参考: https://www.nordicsemi.cn/news/bluetoothle-and-bluetoothclassic/…