打印流

  • 在整个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();
}
} }
}

参考文章

Java IO学习笔记六的更多相关文章

  1. Java IO学习笔记六:NIO到多路复用

    作者:Grey 原文地址:Java IO学习笔记六:NIO到多路复用 虽然NIO性能上比BIO要好,参考:Java IO学习笔记五:BIO到NIO 但是NIO也有问题,NIO服务端的示例代码中往往会包 ...

  2. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  3. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  4. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  5. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  6. Java IO学习笔记一

    Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...

  7. Java IO学习笔记一:为什么带Buffer的比不带Buffer的快

    作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...

  8. Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer

    作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...

  9. Java IO学习笔记三:MMAP与RandomAccessFile

    作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...

随机推荐

  1. poj2100还是尺取

    King George has recently decided that he would like to have a new design for the royal graveyard. Th ...

  2. 关于echarts的那些事(地图标点,折线图,饼图)

    前记:离上一篇博客的发布已经过去两个月了,这期间总想写点什么,却怎么都写不出来,一直拖到了现在.现在的感觉,不是像这期间一样,想好好整理一番,写一篇好博客,却写不出来.事实发现,随心就好,较好的博客, ...

  3. Visual Lisp获得网络时间的方法

    (defun c:tt (/ ie-obj) (setq ie-obj (vlax-get-or-create-object "Msxml2.xmlhttp")) ) (vlax- ...

  4. easyui datebox定位到某一个日期, easyui datebox直接定位到具体的日期, easyui datebox MoveTo方法使用

    easyui datebox定位到某一个日期, easyui datebox直接定位到具体的日期, easyui datebox MoveTo方法使用 >>>>>> ...

  5. jquery与js实现全选功能的区别---2017-05-12

    一.jquery常用的事件 click(),dbclick() focus(),blur() change() keydown(),keypress(),keyup() mousedown(),mou ...

  6. 关于java和c++中的i++

    看到一个题目,大概是i=i++之类. 乍一看很简单,都知道i++的先参与计算再自增, 所以i不变. 但是仔细一想, 如果i不变, 那么在赋值之后, 自增的i, 增加的是谁呢? 逻辑顺序是怎样的呢? / ...

  7. MyEclipse2016添加外部的maven插件

    1.在maven官网下载最新的maven安装包,下载地址:http://maven.apache.org/download.cgi: 2.目前maven的版本是3.5.0,我们下载apache-mav ...

  8. Java学习笔记——设计模式之二.策略模式

    明确是王道 --Clean Code 先定义策略类 package cn.no2.strategy; public abstract class Strategy { //省略属性 //算法方法 pu ...

  9. Ubuntu14.04安装samba

    Ubuntu14.04安装samba 按照惯例,首先介绍Samba.Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件.它实现在局域 ...

  10. jeesz分布式架构集成阿里云oss存储

      1. 服务接口定义 /**  * 文件上传  1:头像 2:显示图片 3:个人封面  :4:基础图片   * @param request  * @param response  * @param ...