大家好,乐字节小乐又来咯,上次讲到了IO流的输入流,本文将讲述Java输出流。

Java输入输出流

一、输出流

1、抽象类:OutputStream 和 Writer

OutputStream和Writer也非常相似。

在OutputStream 里包含如下方法:

在 Writer 中, 因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来代替字符数组,即以String对象来作为参数。 包含如下方法:

2、文件节点类: FileOutputStream 和 FileWriter

FileOutputStream 和 FileWriter,它们都是节点流,直接和指定文件关联。

public class WriteFile {public static void main(String[] args) {//1、建立联系 File对象 源头 目的地File dest=new File("c:/IO/print.txt");//2、选择流 文件输出流 OutputStream FileOutputStreamOutputStream out=null;//以追加形式写出文件 必须为true 否则会覆盖try {out=new FileOutputStream(dest,true);//3、操作String str="shsxt is very good  good good good";//字符串转成字节数组byte[] data=str.getBytes();out.write(data,0,data.length);out.flush();//强制刷新出去} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("文件未找到");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("文件写出失败");}finally{try {if(out!=null){out.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("关闭输出流失败");}}}}//1、创建源File dest=new File("f:/IO/char.txt");//2、选择流Writerwr=new FileWriter(dest,true);//3、写出String str="锄禾日当午码农真辛苦一本小破书一读一上午"; wr.write(str);//追加内容wr.append("我就是追加进去的");wr.flush();//强制刷出//4、关闭资源wr.close();

结合输入输出流,可以实现文件拷贝

public static void copyFile(String srcPath, String destPath) throws FileNotFoundException,IOException{// 1、建立联系 源(存在且为文件) 目的地(文件可以不存在)File src = new File(srcPath);File dest = new File(destPath);if(!src.isFile()){//不是文件或者为null时抛出异常System.out.println("只能拷贝文件");throw new IOException("只能拷贝文件");}// 2、选择流InputStream in = new FileInputStream(src);OutputStream out = new FileOutputStream(dest);// 3、操作byte[] flush = new byte[1024];int len = 0;// 读取while (-1 != (len = in.read(flush))) {// 写出out.write(flush, 0, len);}out.flush();// 强制刷出// 关闭流 先打开的后关闭out.close();in.close();}

3、缓冲处理流:BufferedOutputStream 和 BufferedWriter

缓冲流提升性能,BufferedWriter存在新增方法newLine(),不能发生多态

public static void copyFile(String srcPath, String destPath) throws FileNotFoundException,IOException{// 1、建立联系 源(存在且为文件) 目的地(文件可以不存在)File src = new File(srcPath);File dest = new File(destPath);if(!src.isFile()){//不是文件或者为null时抛出异常System.out.println("只能拷贝文件");throw new IOException("只能拷贝文件");}// 2、选择流InputStream in = new BufferedInputStream(new FileInputStream(src));OutputStream out =new BufferedOutputStream(new FileOutputStream(dest));// 3、操作byte[] flush = new byte[1024];int len = 0;// 读取while (-1 != (len = in.read(flush))) {// 写出out.write(flush, 0, len);}out.flush();// 强制刷出// 关闭流 先打开的后关闭out.close();in.close();}}  //1、创建源  仅限于字符的纯文本File src=new File("f:/char.txt");File dest=new File("f:/testIO/char.txt");//2、选择流BufferedReader reader=new BufferedReader(new FileReader(src));BufferedWriter wr=new BufferedWriter(new FileWriter(dest,true));pend(msg2);  //3、新增方法操作String line=null;while(null!=(line=reader.readLine())){wr.write(line);//wr.append("");//换行符号wr.newLine();}wr.flush();//强制刷出// 4、关闭流 先打开的后关闭out.close();in.close();

4、转换处理流:OutputStreamWriter

可以处理文件的字符集,即将文件按指定字符集进行编码存储 。

//写出文件编码BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(new File("f:/testIO/char.txt"))),"utf-8"));String info=null;while(null!=(info=br.readLine())){bw.write(info);bw.newLine();}bw.flush();bw.close();

5、字节数组节点类: ByteArrayOutputStream

/*** 字节数组输出流:操作与文件输出流有些不同,有新增方法,所以不可以使用多态* @throws IOException */public static byte[] write() throws IOException{//目的地字节数组byte[]dest;//选择流不同点:不需要将目的地放入new ByteArrayOutputStream()ByteArrayOutputStream bos=new ByteArrayOutputStream();//操作写出, 可以当作将本地的内容通过字节数组写入服务器String msg="字节数组输入流:操作与文件输入流操作一致";byte[]info=msg.getBytes();//将内容写入bosbos.write(info,0,info.length);//不同点:获取数据toByteArray():是将字节数组输出流转为字节数组dest=bos.toByteArray();//释放资源bos.close();//由于bos在jvm中,所以关闭与否不影响return dest;}

img src 文件流_Java中的IO流之输出流|乐字节相关推荐

  1. java输出流输入流的使用_Java中的IO流之文件输入输出流

    Java中的IO流之文件输入输出流 1.文件流介绍 文件流是以字节为单位进行读写文件的,所以属于字节流,并且是低级流.文件流位于java.io包下. 输入输出流分别是FileInputSteam和Fi ...

  2. 接收字节流_Java中的IO流之输入流|乐字节

    亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了.上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输出流. 点击回顾上一篇:乐字节Java之file.IO流基础知识和操作步骤 一. 输入 ...

  3. java体系的四大基类_Java中的io流学习(了解四大基类和基本步骤)

    Java中io流四大基类及io流操作四大基本步骤 io流:(input/output)即输入输出流.面向对象的思想之一是面向接口编程,面向父类编程,也就是多态.所以学好基类(父类)很重要. 分类 按处 ...

  4. java io流顶层_Java中的IO流(一)

    一,IO流的分类 A,按照操作的对象不同可分为字节流与字符流 B,按照流的方向不同可分为输入(指从外部存储设备拿文件到内存)流也叫读与输出(指从内存把文件写入到外部存储设备)流也叫写 注:字节流可以操 ...

  5. java中io流是类吗_Java中的IO流

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  6. java byte char io流_Java基础进阶 IO流之字节流

    1.IO流 1.1.概述 之前学习的File类它只能操作文件或文件夹,并不能去操作文件中的数据.真正保存数据的是文件,数据是在文件中.而File类它只是去对文件本身做操作,不能对文件中的数据进行操作. ...

  7. java 文件指定位置插入_java 中利用io流将一个文件插入到另一个文件中的指定位置,指定位置...

    展开全部 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.F ...

  8. java src 文件路径_java中获得src路径下文件的常用方法

    在代码中一般读取src下的配置文件 读取src路径下的log4j.properties和message.properties 读取message.properties文件并将properties中的键 ...

  9. java中--《_Java中的IO流(五)

    当需要直接把信息输出到文件中的时候,并且想要每次输入完成后立即把信息输出到文件中,演示如下 1 private static void function_demo2() throwsIOExcepti ...

最新文章

  1. 江苏省三级偏硬考核重点
  2. mysql 导入文件提示 --secure-file-priv option 问题
  3. 互联网医院 2020年突出成就_资讯丨2020中国医院互联网影响力排行榜
  4. SAP Commerce Extension Module
  5. 远程访问CENTOS的MYSQL数据库设置
  6. phpcmsV9 用seotitle后面的小横杠分隔符自定义
  7. Elasticsearch学习系列-搜索技术基本知识
  8. Qemu-6.1.0多热补丁管理
  9. 【转】linux系统的7种运行级别
  10. vim使用方法和vim解决乱码的问题
  11. mongodb创建超级管理员_MongoDB 用户、库、表的管理
  12. AWS DeepRacer 强化学习RL,工作流程
  13. 免费下载收费音乐教程,亲测有效
  14. VTK读取rawdata
  15. 联想G460驱动问题
  16. python 图标题上移_请问如何在这个Python中将标题一起爬下来啊
  17. c++中的trivial
  18. Android捕获home按键 以及实体键捕获
  19. 华为c语言笔试形式,最新华为C语言笔试题目分享
  20. 大数据流批一体化架构设计

热门文章

  1. 【ES】Es使用 报错 TransportClient llegalstateException : Unsupported transport.type [netty3]
  2. 【Flink】Flink 多并行度下的 watermark触发机制
  3. 快速实现word、excel、ppt、txt等办公文件在线预览功能(Java版)
  4. Java多线程学习十二: synchronized的工作原理 以及背后的“monitor 锁”
  5. java ee 员工管理系统,fb3492 javaEE_原生Servlet_MySql企业员工信息管理系统的设计与实现,java源码含论文与答辩PPT...
  6. 误差分析计算公式及其 matlab 代码实现
  7. windows 根据端口杀死进程
  8. 实现下拉菜单的宽度与登录人ID长度的匹配
  9. React-native集成tfs自动发版问题
  10. 团队编程项目作业1-成员简介及分工