(23)IO之打印流 PrintStream & Printwriter
PrintStream
PrintStream可以接受文件和其他字节输出流,所以打印流是对普通字节输出流的增强,其中定义了很多的重载的print()和println(),方便输出各种类型的数据。
PrintStream:
是一个字节打印流,System.out对应的类型就是PrintStream。
它的构造函数可以接收三种数据类型的值。
1,字符串路径。
2,File对象。
3,OutputStream。
注意: 打印流的三种方法
void print(数据类型 变量)
println(数据类型 变量)
printf(String format, Object... args)
可以自定数据格式
print 和println方法的区别在于,一个换行一个不换行
print 方法和write方法的却别在于,print提供自动刷新.
普通的write方法需要调用flush或者close方法才可以看到数据.
JDK1.5之后Java对PrintStream进行了扩展,增加了格式化输出方式,可以使用printf()重载方法直接格式化输出。但是在格式化输出的时候需要指定输出的数据类型格式。%d, %s, %f, %lf, %c
PrintStream在实际中主要有下面两个用处
1、把任意类型的数据自动转换为字符串输出,相当的方便。
2、方便收集异常日志。
现在说一下一直使用了那么久的System.out到底是什么,api文档直接查看可以知道System.out就是System内部维护的一PrintStream的对象,默认情况这个标准输出流,把内容输出到控制台,你完全可以使用System.setOut方法重新制定标准输出
的位置,只需要传入一个相应的PrintStream参数即可。
//重置标准输出流的位置
System.setOut(printStream);
System.out.println("哈哈哈,你猜猜我在那里呀!!");
这是非常类似于C语言里面的freeopen操作。
收集异常
//收集异常的日志信息 默认情况下异常信息打印到控制台,产品部署到服务器上。而控制台上只能打印部分日志信息,会丢失很多。
//这是我们需要把错误信息打印到文件,e.printStackTrace(PrintStream )传入一个PrintStream参数,打印到文件.但是有一点问题是,这个时候,输出的信息不会追加,而是不断的覆盖。一般日志文件我们用 .log结尾,用日期命名。
//这个时候,可以给PrintStream 传入一个OutputStream 向下面这样
File logFile = new File("D:\\2016722.log");
// PrintStream logPrintStream = new PrintStream(logFile);
PrintStream logPrintStream = new PrintStream(new FileOutputStream(logFile, true));
try
{
int c = / ;
System.out.println("c" +c);
} catch (Exception e)
{
e.printStackTrace(logPrintStream);
}
PrintWriter
是一个字符打印流。构造函数可以接收四种类型的值。
1,字符串路径。
2,File对象。
对于1,2类型的数据,还可以指定编码表。也就是字符集。
3,OutputStream
4,Writer
对于3,4类型的数据,可以指定自动刷新。
注意:该自动刷新值为true时,只有三个方法可以用:println,printf,format.
如果想要既有自动刷新,又可执行编码。如何完成流对象的包装?
PrintWrter pw =
new PrintWriter(new OutputSteamWriter(new FileOutputStream("a.txt"),"utf-8"),true);
如果想要提高效率。还要使用打印方法。
PrintWrter pw =
newPrintWriter(new BufferdWriter(new OutputSteamWriter(
newFileOutputStream("a.txt"),"utf-8")),true);
public static void testPrintWriter() throws Exception {
PrintWriter pw = new PrintWriter("c:/b.txt", "gbk"); // pw.append("xxx");
// pw.println(55);
// pw.println('c');
// pw.printf("%.1s与%4s打价格战, %c", "京东","苏宁", 'a'); pw.close(); } // 下面是使用Scanner
public static void testScanner() throws Exception {
// Scanner scanner = new Scanner(new File("c:/test.txt"));
Scanner scanner = new Scanner(System.in); System.out.println(scanner.nextInt());
System.out.println(scanner.nextBoolean()); scanner.close();
}
(23)IO之打印流 PrintStream & Printwriter的更多相关文章
- 系统学习 Java IO (十一)----打印流 PrintStream
目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基 ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- java学习笔记之IO编程—打印流和BufferedReader
1.打印流(PrintWriter) 想要通过程序实现内容输出,其核心一定是要依靠OutputStream类,但是OutputStream类有一个最大缺点,就是这个类中的输出操作功能有限,所有的数据一 ...
- 打印流PrintStream
打印流PrintStream PrintStream extends OutputStream 1.打印流的特点 只负责数据的输出,不负责数据的读取 与其他的流不同,打印流永远不会抛出IOExcept ...
- 打印流-PrintStream
打印流-PrintStream java.io.PrintStream为其他输出流添加了功能,使其他的流能够更方便的打印各种数据值表现形式 PrintStream特点: 1.只负责数据的输入,不负责数 ...
- IO—》打印流&commons-IO
打印流 打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式. 打印流根据流的分类: 字节打印流 PrintStream 字符打印流 PrintWriter 方法: void print( ...
- 打印流-PrintStream和PrintWriter
概念: 打印流是输出信息最方便的类,注意包含PrintStream(字节打印流)和 PrintWriter(字符打印流).打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数, ...
- Java学习笔记33(IO:打印流,IO流工具类)
打印流: 有两个类:PrintStream PrintWriter类,两个类的方法一样,构造方法不一样 PrintStream构造方法:接收File类型,接收字符串文件名,接收字节输出流(Ou ...
- (JAVA)从零开始之--打印流PrintStream记录日志文件
这里的记录日志是利用打印流来实现的. 文本信息中的内容为String类型.而像文件中写入数据,我们经常用到的还有文件输出流对象FileOutputStream. File file = new Fil ...
随机推荐
- 转:C# Process.Start()方法详解
http://blog.csdn.net/czw2010/article/details/7896264 System.Diagnostics.Process.Start(); 能做什么呢?它主要有以 ...
- thinkjs之页面跳转
对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混用”各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框,,其实它原本是有一个路由专门存放自己的代码逻辑,而在点击提交按钮的 ...
- js中的正则表达式入门
什么是正则表达式呢? 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串.将匹配的子串做替换或者从某个字符串中取出符合某个条件的子串等 ...
- linux gdb基本概念
GDB是一个功能强大的调试器,它是一个自由软件,能够用在许多UNIX平台上.它同时也是Linux系统中的默认调试器.GDB已被移植到许多其他的计算机平台上,并且能够用于调试嵌入式实时系统.一般来说,G ...
- 申请免费的SSL证书(Win7,PowerShell,Let's Encrypt)
随着网络安全形势的发展,SSL已是各大网站的标配,启用SSL的好处自然不必多说,然后每份SSL证书也要花费不菲的银子,按最便宜的DV证书来看,每年也要个四五百呢. 有趋势有需求,自然也有免费可用.免费 ...
- node将excel内容转json
小颖分享的这个方法,前提是你已经安装了node,如果大家不知道自己是否安装过node可以打开cmd,然后执行:node -v,如果安装过,你会看到你安装的node版本号,如果没有安装请先安装node. ...
- 如何用Visual Studio 2008 写汇编程序?
如何用Visual Studio 2008写汇编程序? 最近在上夏季小学期,在学汇编语言,关于用什么编辑环境一直很纠结.很想找到一个比较好的IDE,但是试了几个像RadASM之类的,发现还不是很满意. ...
- OC中extern,static,const的用法
1.const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 例如 NSString *const SIAlertViewWillDismissNotification; ...
- Android 调用jepg库进行图片压缩,保持图片不失真
1. 浅谈为什么Android和iOS图片质量差距那么大? 首先来说,作为一个安卓狗,机器当然用的是安卓的手机.现在的安卓手机大多数都会以高清拍照,动不动就几千万柔光相机来吸引各种买家.买来后,拍照发 ...
- 单点登录实现(spring session+redis完成session共享)
一.前言 项目中用到的SSO,使用开源框架cas做的.简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩. 二.工程结构 我模拟了 sso的客户端和s ...