文章目录

  • 介绍
  • 栗子:文本文件的转码复制

介绍

PrintWriter 与 PrintStream 相同。PrintStream 只能接字节流,而 PrintWriter 既能接字节流又能接字符流。

PrintStream 最终输出的总是 byte 数据,而 PrintWriter 则是扩展了 Writer 接口,它的 print()/println() 方法最终输出的是 char 数据。两者的使用方法几乎是一模一样的。

栗子:文本文件的转码复制

public class Main {public static void main(String[] args) {System.out.println("输入源文件");String s = new Scanner(System.in).nextLine();File from = new File(s);if (!from.isFile()) {System.out.println("请输入正确的文件路径");return;}System.out.println("输入目标文件");s = new Scanner(System.in).nextLine();File to = new File(s);if (to.isDirectory()) {System.out.println("请输入具体的文件路径,不是目录路径");return;}System.out.println("输入原文件字符编码");String fromCharset = new Scanner(System.in).nextLine();System.out.println("输入目标文件字符编码");String toCharset = new Scanner(System.in).nextLine();try {copy(from, to, fromCharset, toCharset);System.out.println("复制成功");} catch (Exception e) {System.out.println("复制失败");}}private static void copy(File from, File to, String fromCharset, String toCharset) throws Exception {// TODO Auto-generated method stub/***               BufferedReader*             InputStreamReader,fromCharset*      FileInputStream*    from**              PrintWriter*            OutputStreamWriter,toCharset*       FileOutputStream*   to**    循环按行读写** */BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(from), fromCharset));PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(to), toCharset));String line;while ((line = in.readLine()) != null) {out.println(line);}in.close();out.close();}
}

运行程序

f7 内容为

转为十六进制查看。原来编码为 UTF-8,英文单字节,中文3字节

f7copy 内容

转为十六进制查看。现在编码为 GBK,英文单字节,中文双字节,增加了换行符。

【达内课程】PrintWriter相关推荐

  1. 【达内课程】面向对象之多态

    文章目录 定义和作用 如何实现多态 例子1:Human 类 instanceof 关键字 例子2:Point3D 类 例子3:绘制图形 类型转换 定义和作用 多态的定义 面向对象的多态性,即" ...

  2. 【达内课程】面向对象之抽象类

    文章目录 抽象类的概念 举例1:绘制图形项目修改 举例2:员工类 抽象类的概念 抽象类的基本概念 1.很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类. 2 ...

  3. java达内项目_达内课程:完成一个项目的整个流程

    感谢达内,在这里,我首先学到的知识是C#基础知识,了解了.Net编译器原理.主要发行版本.应用范围以及如何创建一个HelloWorld程序,学会一些简单的Dos命令操作及Net文本编辑器Vs. 一周的 ...

  4. 【达内课程】Android入门知识

    文章目录 当新建一个 Android 项目时 关于布局和控件 语言的国际化自适应 屏幕尺寸自适应 style样式 简单登录界面实现 课程到这里我们讲了许多 Java 的知识,也学习了 Android ...

  5. 【达内课程】异常Exception(上)

    文章目录 什么是异常 异常分类 初识异常 捕获异常 try...catch...finally throws throw 抛出异常的过程 异常包装 什么是异常 程序运行时,发生的不被期望的事件,它阻止 ...

  6. 【达内课程】ListView使用

    文章目录 ListView ArrayAdapter SimpleAdapter BaseAdapter 优化ListView 使用 ListView实现联系人列表 改进:联系人增加字母索引 改进:联 ...

  7. 【达内课程】Enum(枚举)的使用

    文章目录 常规用法 遍历枚举 作为switch的判断条件 给 enum 自定义属性和方法 替代方案 常规用法 在Java中,被 enum (enumeration)关键字修饰的类型就是枚举类型,是一组 ...

  8. 【达内课程】SQLite(二)中现成的增删改查方法

    文章目录 新增数据 insert() 删除数据 delete() 查询 栗子:使用 CursorAdapter 显示数据查询结果 除了使用 sql 语句,SQLiteDatabase 中提供了一个现成 ...

  9. 【达内课程】算式计算器实现

    文章目录 效果图 算式计算器设计思路 代码实现 效果图 算式计算器设计思路 写一个 Formula 类,在类中写一个迭代器,在此迭代器中拆分出用户输入的算式的数字和运算符 以运算a+b-c*d/e为例 ...

最新文章

  1. Keras【Deep Learning With Python】更优模型探索Keras实现CNN
  2. 剑指offer系列之六十:序列化二叉树
  3. 大学生计算机实验基础考试,大学生计算机基础考试题库完整(56页)-原创力文档...
  4. 分页刷新(SwipeRefreshLayout+SwipeMenuRecyclerView)
  5. 大话数据结构 java源代码_大话数据结构(八)Java程序——双向链表的实现
  6. 一个关于使用 $month,$dayOfMonth 进行按月/日统计的问题
  7. 6张信用卡欠款10000到47000不等,会被起诉坐牢吗?
  8. springboot---整合redis
  9. CF 1529C Parsa‘s Humongous Tree
  10. Namomo Fish(Easy) Round 1
  11. Web中树形数据(层级关系数据)的实现—以行政区树为例
  12. 性能指标、响应时间、并发量…聊聊性能优化的衡量指标
  13. 如歌将两个数组合并_将数组数据拆分后再合并,作为字典的键,实现多条件数据汇总...
  14. 京东订单系统高可用架构及演变过程
  15. [java]房屋出租系统
  16. Iphone8如何投屏到电脑 苹果手机投屏到电脑
  17. 蓝牙 aptx android,蓝牙aptx干嘛用的
  18. uniapp-小程序点击底部导航跳转并刷新页面
  19. 又写无关IT的东西:经济学术语
  20. 鸿蒙系统卸载预装,神器:无需Root卸载预装APP

热门文章

  1. nginx配置https证书双向认证
  2. 0基础本地安装live2d看板娘 -v-
  3. 刚毕业年薪40w......程序员薪资天花板?
  4. DM单节点部署实施过程
  5. 2021-12-21 《聪明的投资者》学习笔记-17.四个非常有启发的案例--失败案例
  6. Oracle Business Intelligence Foundation 12c sample app虚拟机下载和使用
  7. Learning Astute Graphics for Illustrator 为Illustrator学习敏锐的图形 Lynda课程中文字幕
  8. CentOS 7安装Cowsay(奶牛有话说)
  9. 向日葵远程控制端 for Mac
  10. 智工教育:公务员山东考区报名确认注意事项