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

IO流打印流

打印流

IO流打印流是Java中用来将数据打印到输出流的工具。打印流提供了方便的方法来格式化和输出数据,可以用于将数据输出到控制台、文件或网络连接。

分类:打印流一般是指:PrintStream,PrintWriter两个类

特点1:打印流只操作文件目的地,不操作数据源

特点2:特有的写出方法可以实现,数据原样写出

字节打印流:默认自动刷新,特有的println自动换行

字符打印流:自动刷新需要开启,特有的println自动换行

例如:打印:97     文件中:97

      打印:true      文件中:true

特点3:特有的写出方法,可以实现自动刷新,自动换行打印一次数据 =写出+换行+刷新

字节打印流

构造方法
public PrintStream(OutputStream/File/String)        关联字节输出流/文件/文件路径

public PrintStream(String fileName,Charset charset)        指定字符编码

public PrintStream(OutputStream out,boolean autoFlush)自动刷新 

public PrintStream(0utputStream out, boolean autoflush, String encoding)指定字符编码且自动刷新

字节流底层没有缓冲区,开不开自动刷新都一样 

成员方法
public voidwrite(int b)        常规方法:规则跟之前一样,将指定的字节写出
public void println(Xxx xx)        特有方法:打印任意数据,自动刷新,自动换行
public void print(Xxx xx)        特有方法:打印任意数据,不换行
public void printf(String format,Object... args) 特有方法:带有占位符的打印语句,不换行

package printstream;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;public class PrintStreamDemo1 {public static void main(String[] args) throws FileNotFoundException {PrintStream ps=new PrintStream(new FileOutputStream("..\\Myio\\a.txt"));ps.println(97);//打印任意数据,自动刷新,自动换行ps.print(true);//打印任意数据,不换行ps.printf("%s等于%d","i",1);//带有占位符的打印语句,不换行ps.close();}
}

 

字符打印流

字符流底层有缓冲区,想要自动刷新需要开启

构造方法
public PrintWriter(write/File/string)        关联字节输出流/文件/文件路径
public PrintWriter(String fileName,Charset charset)        指定字符编码
public PrintWriter(writew,boolean autoFlush)        自动刷新
public PrintWriter(OutputStream out, boolean autoFlush, Charset charset)指定字符编码且自动刷新

成员方法
public void write(...)        常规方法:规则跟之前一样,写出字节或者字符串
public void println(Xxx xx)        特有方法:打印任意类型的数据并且换行
public void print(Xxx xx)        特有方法:打印任意类型的数据,不换行
public void printf(String format,Object... args)特有方法:带有占位符的打印语句 

package printstream;import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.io.PrintWriter;public class PrintStreamDemo2 {public static void main(String[] args) throws FileNotFoundException {PrintWriter pw=new PrintWriter(new PrintStream("..\\Myio\\a.txt"),true);//写出数据pw.println("你好");pw.print(true);pw.printf("%s等于%d","i",1);//释放资源pw.close();}
}

我们平时写的输出语句就是一个打印流System.out.println();

获取打印流的对象,此打印流在虚拟机启动的时候,由虚拟机创建,默认指向控制台特殊的打印流,系统中的标准输出流,是不能关闭,在系统中是唯一的。 

解压缩流与压缩流 

解压缩流 

 解压的本质:把压缩包里面的每一个文件或者按照层级拷贝到目的地当中

package zipstream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class ZipStreamDemo1 {public static void main(String[] args) throws IOException {//创建一个File表示要解压的压缩包File src=new File("E:\\222.zip");//创建一个File表示要解压的目的地File end=new File("E:\\");unzip(src,end);}public static  void unzip(File src,File end) throws IOException {//创建解压缩流用来读取压缩包中的数据ZipInputStream zis=new ZipInputStream(new FileInputStream(src));//要先获取到压缩包里面的每一个zipentry对象ZipEntry zipEntry;while ((zipEntry=zis.getNextEntry())!=null){System.out.println(zipEntry);if(zipEntry.isDirectory()){//是文件夹:再目的地end处创建一个同样的文件夹File file=new File(end,zipEntry.toString());file.mkdirs();}else{//是文件:需要读取到压缩包中的文件,并把他存放到目的地end文件中(按照层级目录进行存放)FileOutputStream fos=new FileOutputStream(new File(end,zipEntry.toString()));int b=0;while ((b=zis.read())!=-1){//写到目的地fos.write(b);}fos.close();zis.closeEntry();}}zis.close();}
}

大家可以试一试,别设置中文名字的

压缩流 

 压缩本质:把每一个(文件/文件夹)看成ZipEntry对象放到压缩包中

压缩单个文件 

package zipstream;import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class ZipStreamDemo2 {public static void main(String[] args) throws IOException {//创建File对象表示要压缩的文件File src=new File("E:\\a.txt");//创建File对象表示压缩包的位置File end=new File("E:\\");toZip(src,end);}public static void toZip(File src,File end) throws IOException {//创建压缩流关联压缩包ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(end,"a.zip")));//创建ZipEntry对象,表示压缩包里的每一个文件和文件夹ZipEntry entry=new ZipEntry("a.txt");//ZipEntry对象放到压缩包当中zos.putNextEntry(entry);//把src中文件数据写到压缩包中FileInputStream fis=new FileInputStream(src);int b;while ((b=fis.read())!=-1){zos.write(b);}zos.closeEntry();zos.close();}
}

 

压缩文件夹 

package zipstream;import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class ZipStreamDemo3 {public static void main(String[] args) throws IOException {//创建File对象表示要压缩的文件夹File src=new File("E:\\222");//创建File对象表示压缩包放在哪里(压缩包的父级路径)File endParent=src.getParentFile();//创建File对象表示压缩包的路径File end=new File(endParent,src.getName()+".zip");//创建压缩流关联压缩包ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(end));//获取src里面的每一个文件,变成zipEntry对象,放入到压缩包当中toZip(src,zos,src.getName());//释放资源zos.close();}public static void toZip(File src,ZipOutputStream zos,String name) throws IOException {//1.进入src文件夹File[] files = src.listFiles();//2.遍历数组for (File file : files) {if (file.isFile()) {//3.判断-文件,变成zipEntry对象,放入到压缩包当中ZipEntry entry = new ZipEntry(name + "\\" + file.getName());zos.putNextEntry(entry);//读取文件中的数据,写到压缩包FileInputStream fis = new FileInputStream(file);int b;while ((b = fis.read()) != -1) {zos.write(b);}fis.close();zos.closeEntry();} else {//4.判断-文件夹,递归toZip(file, zos, name + "\\" + file.getName());}}}
}

打印流与压缩流就说到这里啦

努力遇见更好的自己!!!

http://www.lryc.cn/news/370947.html

相关文章:

  • Cohere reranker 一致的排序器
  • MySQL系列-语法说明以及基本操作(二)
  • 【STM32】步进电机及其驱动
  • Excel自定义排序和求和
  • 若依RuoYi-Vue分离版—免登录直接访问
  • java基础知识漏洞记录一
  • html的网页制作代码分享
  • 【PIXEL】2024年 Pixel 解除 4G限制
  • C#、C++、Java、Python 选择哪个好?
  • 爬虫补环境,ES6 Class在环境模拟中的应用与优势
  • linuxcentos将本地库JAR/arr批量导入到Nexus3.x
  • js之操作元素属性和定时器以及相关案例倒计时
  • 高考计算机专业 热门专业方向
  • 《web应用技术》第十一次作业
  • Scala学习笔记11: 操作符
  • 项目五串行通信系统 任务5-3温度信息上传
  • 前端 JS 经典:统一 Vite 中图片转换逻辑
  • DOM-获取元素
  • 【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】
  • Java 泛型与集合的深入解析:原理、应用与实践
  • Oracle 数据库的自动化工具:AWR 和 ASM
  • java技术专家面试指南50问【java学习+面试宝典】(五)
  • Elasticsearch之深入聚合查询
  • 大模型:分本分割模型
  • 数据预处理 #数据挖掘 #python
  • VS2022 使用C++访问 mariadb 数据库
  • kotlin 语法糖
  • .NET MAUI Sqlite数据库操作(一)
  • SQL 窗口函数
  • staruml怎么合并多个Project工程文件