Java IO的个人学习笔记(3)
来源:互联网 发布:java if else语句 编辑:程序博客网 时间:2024/05/16 15:44
一.转换流
一.转换流
import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.Writer;public class OutputStreamWriterDemo {public static void main(String[] args)throws Exception{// TODO Auto-generated method stubFile f=new File("d:"+File.separator+"test4.txt");Writer writer=new OutputStreamWriter(new FileOutputStream(f));writer.write("java OutputStreamWriter test");writer.close();}}将字节流变成字节流读取文件,代码如下:
import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.Reader;public class InputStreamReaderDemo {public static void main(String[] args)throws Exception {// TODO Auto-generated method stubFile f=new File("d:"+File.separator+"test4.txt");Reader reader=new InputStreamReader(new FileInputStream(f)); char[] c=new char[1024];int len=reader.read(c);reader.close();System.out.println("内容为:"+new String(c,0,len));}}
二.内存操作流
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;public class ByteArrayInputStreamDemo {public static void main(String[] args)throws Exception {// TODO Auto-generated method stubString str="HELLO WORLD";ByteArrayInputStream bis=new ByteArrayInputStream(str.getBytes());ByteArrayOutputStream bos=new ByteArrayOutputStream();int temp=0;while((temp=bis.read())!=-1) {char c=(char)temp;bos.write(Character.toLowerCase(c));}String newstr=bos.toString();try {bis.close();bos.close();}catch(Exception e) {e.printStackTrace();}System.out.println(newstr);}}这些操作全是在内存中完成的。这个内存操作流一般在生成一些临时信息的时候使用,放在文件里的话,待会程序结束还得删除这个临时文件,比较麻烦.。
三.管道流
import java.io.PipedInputStream;import java.io.PipedOutputStream;class Send implements Runnable{private PipedOutputStream pos=null;public Send() {pos=new PipedOutputStream();}public PipedOutputStream getPos() {return pos;}public void setPos(PipedOutputStream pos) {this.pos = pos;}@Overridepublic void run() {// TODO Auto-generated method stubString str="java io test";try {this.pos.write(str.getBytes());}catch(Exception e) {e.printStackTrace();}try {pos.close();}catch(Exception e) {e.printStackTrace();}}}class Receive implements Runnable{private PipedInputStream pis=null;public Receive() {pis=new PipedInputStream();}public PipedInputStream getPis() {return pis;}public void setPis(PipedInputStream pis) {this.pis = pis;}@Overridepublic void run() {// TODO Auto-generated method stubbyte[] b=new byte[1024];int len=0;try {len=this.pis.read(b);}catch(Exception e) {e.printStackTrace();}try {pis.close();}catch(Exception e) {e.printStackTrace();}System.out.println(new String(b,0,len));}}public class PipedDemo {public static void main(String[] args) {// TODO Auto-generated method stubSend s=new Send();Receive r=new Receive();try {s.getPos().connect(r.getPis());}catch(Exception e) {e.printStackTrace();}new Thread(s).start();new Thread(r).start();}}测试代码有点长,但是很简单,使用PipedOutStream类中提供的connect()方法连接两个管道流。线程启动后自动进行管道的输入输出操作。
四.打印流
打印流是整个IO包中输出信息最方便的类,有字节打印流(PrintStream)和字符打印流(PrintWrter)。打印流可以打印任何数据类型,我们主要介绍字节打印流。1、public PrintStream(File file) throws FileNotFoundException 构造方法 通过一个File对象实例化PrintStream类
2、public PrintStream(OutputStream out) 构造方法 接收OutputStream对象,实例化PrintStream类
3、public PrintStream printf(Locale l, String format, Object ...arg) 普通方法 根据指定的Locale进行格式化输出
4、public PrintStream printf(String format,Object ... arg) 普通方法 根据本地环境进行格式化输出
5、public void print(boolean b) 普通方法 此方法被重载很多次,输出任意数据
6、public void println(boolean b) 普通方法 此方法被重载很多次,输出任意数据后换行
第二个构造方法可以直接接收一个OutputStream对象,这个是因为PrintStream比OutputStream输出更方便,好比把OutputStream包装一下,使之输出更方便。就是打印流把输出流包装了一下,这种设计叫做装饰设计模式。
import java.io.File;import java.io.FileOutputStream;import java.io.PrintStream;public class PrintStreamDemo {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubFile f=new File("d:"+File.separator+"word.txt");PrintStream ps=new PrintStream(new FileOutputStream(f));ps.println("java io test");ps.println(2+2);ps.close();}}
是不是发现方便很多,PrintStream还可以格式化输出,%s->变成字符串;%d->变成整数;%f->变成小数;%c->变成字符,使用printf()完成操作
import java.io.File;import java.io.FileOutputStream;import java.io.PrintStream;public class PrintStreamDemo2 {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubFile f=new File("d:"+File.separator+"word.txt");PrintStream ps=new PrintStream(new FileOutputStream(f));String name="阿里巴巴";int age=20;float grade=88.364f;char sex='男';ps.printf("%s;%d;%f;%c",name,age,grade,sex);ps.close();}}
四.System对IO的支持
setOut(PrintStream out) 重新分配“标准”输出流
为System.out输出重定向:
import java.io.File;import java.io.FileOutputStream;import java.io.PrintStream;public class SystemDemo {public static void main(String[] args)throws Exception {// TODO Auto-generated method stubFile f=new File("d:"+File.separator+"word1.txt");FileOutputStream fileops=new FileOutputStream(f);PrintStream ps=new PrintStream(fileops);System.setOut(ps);System.out.println("java io test");}}其他两个操作都大同小异,我就不一一介绍了。
未完待续.....
- Java IO的个人学习笔记(3)
- Java IO的个人学习笔记(1)
- Java IO的个人学习笔记(2)
- 学习Java遇到的小问题(个人学习笔记)
- java中的IO操作(一)【个人笔记】
- java中的IO操作(二)【个人笔记】
- IO流学习主个人笔记
- JavaSE个人学习笔记03:IO流
- spring io 平台 模块个人学习笔记
- JDK环境变量的设定(个人学习笔记-JAVA)
- Java IO学习笔记
- Java IO学习笔记
- java IO学习笔记
- Java IO学习笔记
- Java IO学习笔记
- Java IO学习笔记
- JAVA IO学习笔记
- java io 学习笔记
- 判断单链表是否递增
- HDU 2602 Bone Collector(01背包问题)
- BPNN
- sys.argv 列表中的第一项总是一个字符串
- canvas setShadowLayer()画阴影不起作用
- Java IO的个人学习笔记(3)
- coursera-斯坦福-机器学习-吴恩达-第9周笔记(下)-推荐系统
- CSS选择器与层叠
- 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。
- 必须的,所以如果用户忘
- STL — 内存基本处理工具(<stl_uninitialized.h>)
- 如果用户忘记添加参数
- WEB安全入坑半年警示录
- 深入理解Java中的final关键字