大家好,乐字节小乐又来咯,上次讲到了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. Javascript学习笔记2——函数
  2. 第7集 构造函数中抛出的异常
  3. linux 打开端口1935,CentOS服务器开放端口
  4. pytorch元素相乘_bert_pytorch学习(1)
  5. IntelliJ IDEA 2017.3-2018.1 全系列汉化包
  6. 【机房重构】关于App.config配置文件
  7. 河南省公安机关户政服务管理工作规范(试行)
  8. python之OCR文字识别
  9. LBS(基于位置服务(Location Based Service))
  10. 虚拟DOM和deff算法
  11. iOS 第三方库、插件、知名博客总结
  12. 路由器 三层交换机 网关有什么区别
  13. 实录:记谷歌在微信脚下的一次翻车
  14. 一种分数微分基方法用于多尺度纹理增强(Fractional Differential Mask: A Fractional Differential-Based Approach for Multi)
  15. 用ps增加照片的气氛--镜头光晕
  16. labview如何加载库_LabVIEW如何方便地调用DLL文件
  17. android 对数标度 图库,如何排序水平堆积条形图JS(具有对数标度)
  18. koa status 204的问题
  19. 面试题:1000瓶酒找1瓶毒酒
  20. 安徽理科480分学计算机的大学,2021年安徽高考480分理科能上什么大学,安徽理科480分能上什么大学...

热门文章

  1. 【Flink】运行Flink 1.6.2 程序偶然报错 Premature end of GET request
  2. 60-140-044-使用-DataSink-使用OutputTag进行Side Output(侧输出)
  3. Spring Boot RabbitMQ 详解
  4. 【java】JDK8的HashMap
  5. 【Hbase】命令行load数据文件到Hbase
  6. Oracle数据字典中查看约束信息/约束相关笔记
  7. java中junit用法,JUnit基本用法
  8. Could not retrieve transaction isolation level from server
  9. Python3 移动文件——合集
  10. (转)十分钟入门pandas