Java IO学习笔记(四)打印流

1、只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出。PrintWriter和PrintStream操作不会抛出异常,数据没打印出来也不会抛异常。

2、System.out.print(Object object)调用的是Object实体类的toString()方法。

3、PrintWriter和PrintStream有自动的flush功能,不需要手动调用flush方法。*这里必须强调一点:PrintWriter的自动flush功能,只有在new PrintWriter对象的时候调用PrintWriter(Writer out, boolean autoFlush),并将 autoFlush设置为true才会自动flush,否则不会自动flush,必须手动printWriter.flush()才能成功打印数据。

另外,PrintWriter方法不仅可以套在Writer字符输出流的外面,还可以套在字节输出流外面,PrintWriter的构造方法如下:

PrintStream的具体构造方法如下图:

4、System.out.println()中,java.lang.System.out中的out就是PrintStream类型的。

练习小程序1:

package test.io.print;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.PrintStream;

public class PrintStreamTest {

public static void main(String args[]){

PrintStream ps = null;

FileOutputStream fos = null;

try {

fos = new FileOutputStream("E:/技术学习/java/test/Socket/test6.txt");

ps = new PrintStream(fos);

System.setOut(ps);//不再是控制台输出,而是输出到FileOutputStream所指向的文件中。

for(int i=0; i<3000; i++){

System.out.print(i+" ");

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} finally{

try {

if(ps != null){

ps.close();

}

if(fos != null){

fos.close();

}

}catch (IOException e){

e.printStackTrace();

}

}

}

}

练习小程序2:从控制台输入内容,并将控制台输入的内容打印到文件中,类似于记日志

package test.io.print;

import java.io.BufferedReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.util.Date;

public class PrintWriterTest {

public static void main(String args[]){

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

String s = null;

PrintWriter pw = null;

try {

//PrintWriter构造方法将是否自动flush设置成了true,即可自动flush,如果没设置true,则必须手动调用flush方法,才能把内容打印到文件中

pw = new PrintWriter(new FileWriter("E:/技术学习/java/test/Socket/test7.txt",true),true);

while((s=bf.readLine()) != null){

if(s.equals("exit")){

break;

}

System.out.println(s);

pw.println("---------------------------------------");

pw.println(s);

//pw.flush();

}

pw.println("-------------"+new Date()+"------------");

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

if(bf != null){

bf.close();

}

if(pw != null){

pw.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

时间: 2024-07-30 10:00:52

Java IO学习笔记(四)打印流的相关文章

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

Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件.内存.控制台.网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分. 二.分类 流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕.流分类的方式很多: 1.按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序. 2.

Java.io.outputstream.PrintStream:打印流

Java.io.outputstream.PrintStream:打印流 1:提供了更多的功能,比如打印方法.可以直接打印任意类型的数据. 2:它有一个自动刷新机制,创建该对象,指定参数,对于指定方法可以自动刷新. 3:它使用的本机默认的字符编码. 4:该流的print方法不抛出IOException. 该对象的构造函数. PrintStream(File file)  :创建具有指定文件且不带自动行刷新的新打印流. PrintStream(File file, String csn) :创建具

Java IO学习笔记(五)对象流

1.Object流:直接将Object写入或读出. 2.序列化:将Object直接转化成字节流写到硬盘或网络上. 3.如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口,Serializable接口是标记性接口,它并没有任何方法,只是用于标识该类可以被序列化. 4.transient关键字,用于修饰成员变量,表示该成员变量是透明的,与Serializable接口同用,表示序列化的时候不考虑该成员变量.序列化时存的是该成员变量数据类型的默认值. 5.External

Java IO学习笔记(三)转换流、数据流、字节数组流

转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和BufferedWriter,并使用它们的readLine 和 newLine方法. 2.有两种转换流:InputStreamReader.OutputStreamWriter 练习小程序1: package test.io.transfer; import java.io.FileOutputSt

Java IO学习笔记(一)

一.概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.在两设备间的传输的数据称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,以进行数据操作. 二.流分类 数据类型:字符流和字节流 流方向:输入流和输出流 字节流和字符流区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节. 处理对象不同:字节流能处理所有类型的数据(如图片.rmvb等),字符流只能处理字符类型的数据. 处理纯文本数据,优先使用字符流,此

Java IO学习笔记:File类

File类 在整个IO包了,唯一表示与文件本身有关的类就是File类.使用File类可以进行1创建或删除文件等常用操作.要想使用File类.则首先要观察File类的构造方法,此类的      常用构造方法如下所示:public File(String pathname) 实例化File类的时候,必须设置好路径 No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径的分隔符(windows是“;”) 2 public s

Java基础学习笔记四 Java基础语法

数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻烦. 数组的概述 数组是指一组数据的集合,数组中的每个数据被称作元素.在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致. 数组的定义 格式: 数据类型[] 数组名 = new 数据类型[元素个数或数组长度]; 举例:int[] x = new int[100]; 要点说明 数据类

java IO 学习笔记

1.IO的数据源有: 文件 管道 网络  内存缓存 读写方式有字符读写 reader writer ,字节读写 Stream. 2.IO的异常处理: try with resources 模板  其中key要实现Autoclose接口. 3.buffer :为提高磁盘访问速度,开辟了一大块的缓冲区(可一次读取多个字节)从而提高了访问磁盘速度 4.管道:pipe 多用来不同线程之间异步通信.(不要放到一个线程中,不然容易造成死锁)

《Thinking in Java》学习笔记(四)

1.Java中的闭包与回调 通过内部类提供闭包的功能是优良的解决方案,比指针更为灵活.安全. 回调的价值在于它的灵活性—它可以动态地决定需要调用什么方法,在Swing中,回调被大量使用. 2.容器类 Java容器类的用途是用来保存对象,可以分为以下的两个大类: 1>Collection,一个用于存储对象的序列.又可以具体的分为List,Set和Queue. 2>Map,一个以键值对来存储对象的序列. Arrays和Collections类中提供了很多实用的静态方法. 1.创建一个空的colle