一、打印流

  • 作用:打印流可以实现方便、高效的打印数据到文件中
  • 打印流一般是指:PrintStream、PrintWriter 两个类。
  • 可以实现打印什么数据就是什么数据
    • 例如:打印整数97写出去就是97,打印boolean的true,写出去就是true。




1、PrintStream

(1)构造器
构造器 说明
public PrintStream(OutputStream out) 打印流直接通向字节输出流管道
public PrintStream(File file) 打印流直接通向文件对象
public PrintStream(String fileName) 打印流直接通向文件路径
public PrintStream(String fileName, String csn) 打印流直接通向文件路径,并指定字符集编码

(2)方法
方法名称 说明
public void print(Xxx xx) 打印任意类型的数据出去

package com.app.d6_print_stream;import java.io.FileOutputStream;
import java.io.PrintStream;/**目标:学会使用打印流,高效、方便的写数据出去*/
public class PrintStreamDemo01 {public static void main(String[] args) {try (// 1、创建打印流管道接通目标文件
//                PrintStream ps = new PrintStream(new FileOutputStream("day11-io2-app/src/ps.txt"));PrintStream ps = new PrintStream("day11-io2-app/src/ps.txt");// 打印流还可以直接指定编码写出数据
//                PrintStream ps = new PrintStream("day11-io2-app/src/ps.txt", "GBK");) {// 2、打印任意类型的数据ps.println(97);ps.println('a');ps.println(23.5);ps.println(true);ps.println("我是打印流输出的,我是啥就打印啥!");ps.println('国');}catch (Exception e) {e.printStackTrace();}}
}




2、PrintWriter

(1)构造器
构造器 说明
public PrintWriter(OutputStream out) 打印流直接通向字节输出流管道
public PrintWriter(Writer w) 打印流直接通向字符输出流管道
public PrintWriter(File file) 打印流直接通向文件对象
public PrintWriter(String fileName) 打印流直接通向文件路径
public PrintWriter(String fileName, String csn) 打印流直接通向文件路径,并指定字符集编码

(2)方法
方法名称 说明
public void print(Xxx xx) 打印任意类型的数据出去

package com.app.d6_print_stream;import java.io.FileWriter;
import java.io.PrintWriter;/**目标:学会使用打印流,高效、方便的写出数据*/
public class PrintWriterDemo02 {public static void main(String[] args) {try (// 1、创建打印流管道接通目标文件
//                PrintWriter pw = new PrintWriter(new FileWriter("day11-io2-app/src/pw.txt"));PrintWriter pw = new PrintWriter("day11-io2-app/src/pw.txt");   // 打印功能与PrintStream的使用没有区别// 打印流还可以直接指定编码写出数据
//                PrintWriter pw = new PrintWriter("day11-io2-app/src/pw.txt", "GBK");) {// 2、打印任意类型的数据pw.println(97);pw.println('a');pw.println(23.5);pw.println(true);pw.println("我是打印流输出的,我是啥就打印啥!");pw.println('国');}catch (Exception e) {e.printStackTrace();}}
}




3、PrintStream与PrintWriter的区别

  • 打印数据功能上是一样的,都是使用方便、性能高效(核心优势)
  • PrintStream继承自字节输出流OutputStream,支持写字节数据的出去。
  • PrintWriter继承自字符输出流Writer,支持写字符数据的出去。



总结

1、打印流有几种?各有什么特点?

  • 打印流一般是指:PrintStream、PrintWriter两个类
  • 打印功能两者都是一样的使用方式
  • PrintStream继承自字节输出流OutputStream:支持写字节数据出去
  • PrintWriter继承自字符输出流Writer:支持写字符数据出去

2、打印流的优势什么?

  • 两者在打印功能上都是使用方便、性能高效(核心优势)



二、输出语句的重定向

  • 属于打印流的一种应用,可以把输出语句的打印位置改到文件。

    PrintStream ps = new PrintStream("文件地址");
    System.setOut(ps);
    

package com.app.d7_print_stream_redirect;import java.io.PrintStream;/**目标:了解打印流重定向操作:将系统打印流改成我们自己的打印流*/
public class PrintStreamRedirectDemo {public static void main(String[] args) {System.out.println("风急天高猿啸哀,渚清沙白鸟飞回。"); // 这句语句底层就是调用打印流将数据打印到控制台的System.out.println("无边落木萧萧下,不尽长江滚滚来。");try (// 重定向:改变输出语句的位置到指定文件中PrintStream ps = new PrintStream("day11-io2-app/src/log.txt");) {// 把系统打印流改成我们自己的打印流System.setOut(ps);System.out.println("万里悲秋常作客,百年多病独登台。");System.out.println("艰难苦恨繁霜鬓,潦倒新停浊酒杯。");}catch (Exception e) {e.printStackTrace();}}
}

控制台:


将系统打印流改成我们自己的打印流后:



三、补充知识:Properties

1、概述

  • Properties属性集对象

    • 其实就是一个Map集合,但是我们一般不会当集合使用,因为HashMap更好用。



2、Properties核心作用

  • Properties代表的是一个属性文件,可以把自己对象中的键值对信息存入到一个属性文件中

    • 属性文件:后缀是.properties 结尾的文件,里面的内容都是key=value,后续做系统配置信息的。

3、Properties的API

  • Properties和IO流结合的方法:
方法名称 说明
void load(InputStream inStream) 从输入字节流读取属性列表(键和元素对)
void load(Reader reader) 从输入字符流读取属性列表(键和元素对)
void store(OutputStream out, String comments) 将此属性列表(键和元素对)写入此 Properties 表中,
以适合使用 load(InputStream)方法的格式写入输出字节流
void store(Writer writer, String comments) 将此属性列表(键和元素对)写入此 Properties 表中,
以适合使用 load(Reader)方法的格式写入输出字符流
public Object setProperty(String key, String value) 保存键值对( put )
public String getProperty(String key) 使用此属性列表中指定的键搜索属性值( get )
public Set< String > stringPropertyNames() 所有键的名称的集合( keySet() )

package com.app.d8_properties;import java.io.FileWriter;
import java.util.Properties;/**目标:使用Properties把键值对信息存入到属性文件中(写入)*/
public class PropertiesDemo01 {public static void main(String[] args) {// 1、创建属性集propertiesProperties properties = new Properties();// 2、将键值对信息存入到属性集properties中properties.setProperty("admin", "abc123");properties.setProperty("root", "123123");properties.setProperty("moyu", "6a6b6c");System.out.println(properties);try {/**结合IO流将属性集properties中的键值对数据信息存入到属性文件users.properties中参数一:保存管道(字符输出流)参数二:保存心得(注释)*/properties.store(new FileWriter("day11-io2-app/src/users.properties"), "This is users!!");}catch (Exception e) {e.printStackTrace();}}
}
{root=123123, admin=abc123, moyu=6a6b6c}Process finished with exit code 0



package com.app.d8_properties;import java.io.FileReader;
import java.util.Properties;/**目标:使用Properties读取属性文件中的键值对信息(读取)*/
public class PropertiesDemo02 {public static void main(String[] args) {// 1、创建属性集propertiesProperties properties = new Properties();System.out.println(properties); // {}:空的try {// 2、加载属性文件中的键值对数据信息到属性集properties中properties.load(new FileReader("day11-io2-app/src/users.properties"));System.out.println(properties);// 3、根据键获取属性值String rs1 = properties.getProperty("root");System.out.println(rs1);String rs2 = properties.getProperty("admin");System.out.println(rs2);}catch (Exception e) {e.printStackTrace();}}
}
{}
{root=123123, admin=abc123, moyu=6a6b6c}
123123
abc123Process finished with exit code 0



总结

1、Properties的作用是啥?

  • 可以存储Properties属性集的键值对数据到属性文件中

    • void store(Writer writer, String comments)
  • 可以加载属性文件中的数据到属性集Properties中
    • void load(Reader reader)



四、补充知识:IO框架

1、commons-io概述

  • commons-io是apache开源基金组织提供的一组有关IO操作的类库,可以提高IO功能开发的效率。
  • commons-io工具包提供了很多有关IO操作的类。
  • 有两个主要的类:FileUtilsIOUtils


2、下载commons-io的jar包






重点关注FileUtils、IOUtils





3、FileUtils主要方法

方法名称 说明
String readFileToString(File file, String encoding) 读取文件中的数据,返回字符串
void copyFile(File srcFile, File destFile) 复制文件到某个文件夹
void copyDirectoryToDirectory(File srcDir, File destDir) 复制文件夹到某个文件夹


4、导入commons-io-2.6.jar做开发

  • 需求

    • 使用commons-io简化IO流读写数据
  • 分析
    • 1、在项目中创建一个文件夹:lib
    • 2、将commons-io-2.6.jar文件复制到lib文件夹
    • 3、在jar文件上点右键,选择Add as Library(加载到依赖库中) ——> 点击OK
    • 4、在类中导包使用
  • 1、2、3步










  • 4步













96-Java的打印流、打印流重定向、补充知识:Properties、commons-io框架相关推荐

  1. Java IO流学习总结七:Commons IO 2.5-FileUtils

    Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...

  2. Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...

    你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...

  3. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  4. JAVA学习 API_day10(缓冲流, 打印流, 对象流)

    缓冲流, 转换流, 打印流, 对象流 1. 缓冲流 1. 字节缓冲流 2. 字符缓冲流 2.打印流 1.字节打印流(了解) 2.字符打印流 3.对象流 1. 缓冲流 1. 字节缓冲流 包装 -> ...

  5. Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...

  6. Java IO流 - 打印流详细使用介绍

    文章目录 打印流 打印流基本使用 输出语句重定向 打印流 打印流基本使用 打印流: 作用:打印流可以实现更方便.更高效的打印数据到文件中去.打印流一般是指:PrintStream,PrintWrite ...

  7. java学习--基础知识进阶第十天--标准输入流 转换流 打印流、对象操作流 、Properties集合...

    今日内容介绍 u  标准输入流 & 转换流 & 打印流 u  对象操作流 u  Properties集合 第1章 标准输入流 & 转换流 & 打印流 1.1 标准输入输 ...

  8. (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流

    [Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...

  9. Java基础19:IO流—缓冲流、转换流、序列化、打印流、压缩流和解压流

    IO流中的一些其他流:缓冲流.转换流.序列化.打印流.压缩流和解压流 1. 缓冲流 IO流除了一些基本的流,还有在此基础上发展出来的一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够 ...

最新文章

  1. nginx 开发一个简单的 HTTP 模块
  2. 某程序员因开发进度慢,被公司索赔90万!
  3. 范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
  4. spark streaming 5: InputDStream
  5. jar包打补丁 jar -uf_maven项目引入本地jar包的方法
  6. Ms SQL Server 约束和规则
  7. java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较
  8. JAVA通过JCO连接SAP例子
  9. 深度学习-激活函数总结
  10. 掌握bandicam以及KMPlayer
  11. 所有计算机都可以安装win7,t570都可以装win7系统吗_win7 64位系统所有电脑都能装吗...
  12. 计算机wifi共享怎么设置,笔者教你win7如何设置wifi共享
  13. 10 道超级高频 Java 面试题,助力金三银四
  14. php 句号,句号 - Programming Life - PHP博客
  15. stm32F407控制器在驱动电机等执行机构时,ADS1256采集模块出现死机现象,问题待解决
  16. 关于SimpleDateFormat处理时间格式容易忽视的问题
  17. 互联网怎么赚钱 by taosay --集结贴
  18. ntpdate解决同步时间报错 the NTP socket is in use, exiting
  19. 计算机文化基础0008 17秋在线作业1,川大《计算机文化基础0008》17秋在线作业1(100分)...
  20. 浅谈游戏数据分析---留存篇一-留存折损

热门文章

  1. 浙大计算机学院app开发,App Inventor - 零基础Android移动应用开发
  2. wordcloud的常用函数
  3. 20世纪十大哲学问题
  4. Hyper-V 和 VMWare 终于可以无缝共存、同时运行了
  5. 阿里云国际站代理商:阿里云国际版香港轻量ECS服务器怎么样?
  6. 图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建
  7. Java最全八股文(2023最新整理)
  8. 360浏览器兼容模式下站点显示不正常,极速模式正常
  9. python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)
  10. 操作系统概念_第六章_进程同步