96-Java的打印流、打印流重定向、补充知识:Properties、commons-io框架
一、打印流
- 作用:打印流可以实现方便、高效的打印数据到文件中。
- 打印流一般是指: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操作的类。- 有两个主要的类:
FileUtils
、IOUtils
。
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、在项目中创建一个文件夹:
- 1、2、3步:
- 4步:
96-Java的打印流、打印流重定向、补充知识:Properties、commons-io框架相关推荐
- Java IO流学习总结七:Commons IO 2.5-FileUtils
Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...
你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- JAVA学习 API_day10(缓冲流, 打印流, 对象流)
缓冲流, 转换流, 打印流, 对象流 1. 缓冲流 1. 字节缓冲流 2. 字符缓冲流 2.打印流 1.字节打印流(了解) 2.字符打印流 3.对象流 1. 缓冲流 1. 字节缓冲流 包装 -> ...
- Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...
- Java IO流 - 打印流详细使用介绍
文章目录 打印流 打印流基本使用 输出语句重定向 打印流 打印流基本使用 打印流: 作用:打印流可以实现更方便.更高效的打印数据到文件中去.打印流一般是指:PrintStream,PrintWrite ...
- java学习--基础知识进阶第十天--标准输入流 转换流 打印流、对象操作流 、Properties集合...
今日内容介绍 u 标准输入流 & 转换流 & 打印流 u 对象操作流 u Properties集合 第1章 标准输入流 & 转换流 & 打印流 1.1 标准输入输 ...
- (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流
[Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...
- Java基础19:IO流—缓冲流、转换流、序列化、打印流、压缩流和解压流
IO流中的一些其他流:缓冲流.转换流.序列化.打印流.压缩流和解压流 1. 缓冲流 IO流除了一些基本的流,还有在此基础上发展出来的一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够 ...
最新文章
- nginx 开发一个简单的 HTTP 模块
- 某程序员因开发进度慢,被公司索赔90万!
- 范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
- spark streaming 5: InputDStream
- jar包打补丁 jar -uf_maven项目引入本地jar包的方法
- Ms SQL Server 约束和规则
- java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较
- JAVA通过JCO连接SAP例子
- 深度学习-激活函数总结
- 掌握bandicam以及KMPlayer
- 所有计算机都可以安装win7,t570都可以装win7系统吗_win7 64位系统所有电脑都能装吗...
- 计算机wifi共享怎么设置,笔者教你win7如何设置wifi共享
- 10 道超级高频 Java 面试题,助力金三银四
- php 句号,句号 - Programming Life - PHP博客
- stm32F407控制器在驱动电机等执行机构时,ADS1256采集模块出现死机现象,问题待解决
- 关于SimpleDateFormat处理时间格式容易忽视的问题
- 互联网怎么赚钱 by taosay --集结贴
- ntpdate解决同步时间报错 the NTP socket is in use, exiting
- 计算机文化基础0008 17秋在线作业1,川大《计算机文化基础0008》17秋在线作业1(100分)...
- 浅谈游戏数据分析---留存篇一-留存折损
热门文章
- 浙大计算机学院app开发,App Inventor - 零基础Android移动应用开发
- wordcloud的常用函数
- 20世纪十大哲学问题
- Hyper-V 和 VMWare 终于可以无缝共存、同时运行了
- 阿里云国际站代理商:阿里云国际版香港轻量ECS服务器怎么样?
- 图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建
- Java最全八股文(2023最新整理)
- 360浏览器兼容模式下站点显示不正常,极速模式正常
- python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)
- 操作系统概念_第六章_进程同步