专栏首页码猿技术专栏Java IO学习笔记六

Java IO学习笔记六

文章目录

  1. 1. 打印流
    1. 1.1. PrintStream
      1. 1.1.1. 构造函数
      2. 1.1.2. 常用的函数
      3. 1.1.3. 实例
    2. 1.2. PrintWriter
      1. 1.2.1. 构造函数
      2. 1.2.2. 常用函数
      3. 1.2.3. 实例
    3. 1.3. 参考文章

打印流

  • 在整个IO包中,打印流是输出信息最方便的类,主要包含字节打印流PrintStream)和字符打印流PrintWrite)。打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如:小数、整数、字符串等等,相对于前面学习的几个文件的操作来说,这里的打印流是最简便的一个类了

PrintStream

  • 主要功能是格式化的将内容写入文件,并不是打印在控制台上
  • PrintStream最大的好处就是可以格式化的输出,相信学过c的朋友都知道prinf这格式化输出函数,这里的PrintStream实现了更加简单的格式化输出,不需要使用什么%d,%f了,只需要都是用%s即可,这个很像python
  • PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter类。

构造函数

  • PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印流。
  • PrintStream(OutputStream out) 创建新的打印流。
  • PrintStream(OutputStream out, boolean autoFlush) 创建新的打印流,并且设置自动刷新
  • PrintStream(String fileName) 创建具有指定文件名称且不带自动行刷新的新打印流。
File file_2=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
PrintStream printStream=new PrintStream(file_2);  //直接使用File
PrintStream printStream=new PrintStream(new FileOutputStream(file_2));  //使用OutputStream的子类FileOutputStream

常用的函数

  • PrintStream append(char c) 在此输入流的后面追加字符。
  • PrintStream append(CharSequence csq) 将指定字符序列添加到此输出流。
  • PrintStream append(CharSequence csq, int start, int end) 将指定字符序列的子序列添加到此输出流。
  • print() 打印常用的数据类型,比如String,char,int ,double,float,boolean,long,short
  • println() 打印常用的数据类型,但是带有换行符
  • printf(String format, Object... args) 使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
  • format(String format, Object... args) 使用指定格式字符串和参数将格式化字符串写入此输出流中。
  • close()
  • flush()

实例

package IO;
import java.io.*;
/**
 * Created by chenjiabing on 17-5-25.
 */
 
 
/**test.txt文件中的结果如下:
 陈加兵
 2299.9
 姓名:陈加兵,n年龄:22,成绩:99.9
 姓名:陈加兵,n年龄:22,成绩:99.9
 c
 chenjiabi
 */
public class demo9 {
    public static void main(String[] args) {
        PrintStream printStream = null;
        File file_1 = new File("/tmp" + File.separator + "test");
        File file_2 = new File("/tmp" + File.separator + "test" + File.separator + "test.txt");
        if (!file_1.exists()) {
            file_1.mkdir();
            System.out.println("文件创建成功");
        }
        try {
//            PrintStream printStream=new PrintStream(file_2);
            printStream = new PrintStream(new FileOutputStream(file_2));
            String name = "陈加兵";
            int age = 22;
            float grade = 99.9f;
            printStream.println(name);//println()
            printStream.print(age);//print()
            printStream.println(grade);//print()
            printStream.format("姓名:%s,n年龄:%s,成绩:%s%s", name, age, grade, "\n");//format()
            printStream.printf("姓名:%s,n年龄:%s,成绩:%s%s", name, age, grade, "\n");
            printStream.append('c');   //append
            printStream.append("\nchenjiabing",0,10);  //append
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (printStream != null) {
                printStream.flush();
                printStream.close();
            }
        }
    }
}

PrintWriter

  • 继承Writer,主要针对的是字符流的操作
  • 向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
  • PrintStream 类不同,如果启用了自动刷新,则只有在调用 printlnprintfformat 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
  • 此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用 checkError() 是否出现错误。

构造函数

  • PrintWriter(File file) 使用指定文件创建不具有自动行刷新的新 PrintWriter
  • PrintWriter(OutputStream out) 根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter
  • PrintWriter(OutputStream out, boolean autoFlush) 通过现有的 OutputStream 创建新的 PrintWriter
  • PrintWriter(String fileName) 创建具有指定文件名称且不带自动行刷新的新 PrintWriter

常用函数

这里的常用到的函数和PrintStream的差不多就不再详细的列出来了,详情请看帮助文档

实例

package IO;
import java.io.*;
/**
 * Created by chenjiabing on 17-5-25.
 */
public class demo10 {
    public static void main(String[] args)
    {
        PrintWriter printWriter=null;
        File file=new File("/tmp"+File.separator+"test"+File.separator+"file.txt");
        try {
            printWriter=new PrintWriter(new FileOutputStream(file));
            printWriter.println("chenjiabing");
            printWriter.println("陈加兵");
        }catch (IOException e)
        {
            e.printStackTrace();
        }finally {
                if(printWriter!=null)
                {
                    printWriter.close();
                }
        }
    }
}

参考文章

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java IO学习笔记一

    爱撒谎的男孩
  • JDBC干货一

    爱撒谎的男孩
  • Ribbon(客户端负载均衡)

    server: port: 8001 servlet: context-path: /eureka-provider # 访问的项目名称...

    爱撒谎的男孩
  • SD-WAN:组织需要权衡的10个基本考虑因素

    SD-WAN是目前最热门的网络新技术之一,许多分布式组织纷纷采用SD-WAN解决方案。SD-WAN的吸引力在于,它将多个物理WAN链路组合到一个逻辑网络中,并能...

    SDNLAB
  • mermaid绘图

    大数据工程师-公子
  • JavaWeb——MVC开发模式简介

    MVC实际上是一种程序设计的思想,本篇博文不再过多介绍,了解这个概念,后续有相关的实战案例再补充博文。

    Winter_world
  • 一键启动关闭删除docker容器或者images

    老七Linux
  • IntelliJ的Scala配置

    机器学习和大数据挖掘
  • 删除指定文件夹下的所有东西

    用户5927264
  • Dijkstra算法

    Dijkstra算法使用了广度优先搜索解决赋权有向图(或无向图)的单源最短路径问题。

    mwangblog

扫码关注云+社区

领取腾讯云代金券