1.内存操作流,ByteArrayInputStream和 ByteArrayOutputStream

案例:将小写转化为大写

/*
* 内存操作流,将大写字母转化为小写字母(ByteArrayInputStream和 ByteArrayOutputStream)
*/
public static void ChangeLowLetterToBigLetter() throws IOException{
String str="he who has a dream is a true man";
//直接 将字符串转化为字节数组,放到内存中
ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
//out是直接取得内存中的字节数组
ByteArrayOutputStream out=new ByteArrayOutputStream();
int count=0;
int temp=0;
//从内存中一个一个的读字节
while((temp=in.read())!=(-1))
{
char ch=(char)temp;
//转化为大写,直接写到内存中
out.write(Character.toUpperCase(ch));
}
System.out.println(out.toString()); }

注意:这里一个ByteArrayInputStream对应一个ByteArryOutputStream ,通过每次读取一个字节的方式,能够很好的控制输入输出

内容操作流一般使用来生成一些临时信息采用的,这样可以避免删除的麻烦。

/**
* @param args
* 2.管道流 管道流主要可以进行两个线程之间的通信。
* PipedOutputStream 管道输出流 起点
* PipedInputStream 管道输入流 终点
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Send send=new Send();
Recive revice=new Recive(); try{
//管道接受流实例和管道发送流实例连接
revice.getIn().connect(send.getOut());
}
catch(Exception e)
{
e.printStackTrace();
}
//开启两个线程
new Thread(send).start();
new Thread(revice).start();
} } //发送管道流
class Send implements Runnable {
private PipedOutputStream out = null; public Send() {
this.out = new PipedOutputStream();
}
public PipedOutputStream getOut()
{
return this.out;
} @Override
public void run() {
// TODO Auto-generated method stub
String str=" he who has a dream is a true man";
try
{
out.write(str.getBytes());
}
catch(Exception ex)
{
ex.printStackTrace();
}
try{
out.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
} } /*
* 接受管道
*/
class Recive implements Runnable
{
private PipedInputStream in=null;
public Recive()
{
in =new PipedInputStream();
} public PipedInputStream getIn() {
return this.in;
}
@Override
public void run() {
// TODO Auto-generated method stub
try
{
int len;
byte[] all=new byte[1024];
len=in.read(all);
System.out.println("success:"+new String(all,0,len));
}
catch(Exception e)
{
e.printStackTrace();
}
} }

二.打印流

/*
*1 .打印流
* Printstream
* 直接打印到对应的文件,格式化输出
*/
public static void PrintStreamTest() throws IOException
{
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
PrintStream printStram=new PrintStream(filePath);
//下面的方法也能创建一个打印流实例
//PrintStream printS=new PrintStream(new FileOutputStream(filePath));
//直接打印到文件
printStram.println("nihaoma");
printStram.println("你妹没的");
//下面是格式化输出
String name="jackvin";
String age="12";
printStram.printf("name:%s \t age:%s",name,age); printStram.close(); }

结果:
nihaoma
你妹没的
name:jackvin   age:12

二:system.out,system.in,system.err 重定向

/*
* system.out 重定向,直接写文件
*/
public static void SystemOutReDirector() throws IOException
{
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt"; System.out.println("show in console");
File file=new File(filePath); PrintStream ps=new PrintStream(new FileOutputStream(file));
//将out定义成PrintStream,直接向文件中写入
System.setOut(ps);
//写文件
System.out.println("this sentence will show in the txt"); } /*
* system.err重定向,直接写文件
*/
public static void SysErrReDirector()
{
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
System.err.println("show in the console");
try
{
PrintStream ps =new PrintStream(filePath);
System.setErr(ps);
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.err.println("show in the txt"); } /*
* system.in重定向,直接从文件中读取
*/
public static void SysInReadFromFile() {
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
try {
//定义一个输入流对象
InputStream in=new FileInputStream(filePath);
//修改system.in的读入方式
System.setIn(in);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
byte[] all=new byte[1024];
int count=0;
int temp=0;
try {
while((temp=System.in.read())!=(-1))
{
all[count++]=(byte)temp;
} } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println(new String(all,0,count)); }

三:Scanner类,直接读取文件,输出到console

/*
* Scanner类,直接读取文件输出到控制台
*/
public static void scannerTest() {
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
try {
Scanner scanner =new Scanner(new File(filePath));
while(scanner.hasNextLine())
{
System.out.println(scanner.nextLine());
} System.out.println("sfsf"); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} }

四:DataOutputStream 和DataInputStream

/*
* DataOutputStream 输出流
*/
public static void dataOutputStream()
{
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
try {
//定义一个DataOutputStream 对象
DataOutputStream out=new DataOutputStream(new FileOutputStream(filePath)); String str="hi,this is DataOutputStream write";
out.write(str.getBytes());
System.out.println("dataoutput sucess!"); } catch (Exception e) {
// TODO: handle exception
}
}
/*
* DataInputStream 输入流,将DataOutStream 输入到文件的内容,写到控制台
*/
public static void dataInputStreamTest() {
String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
try {
DataInputStream in=new DataInputStream(new FileInputStream(filePath));
byte[] all=new byte[1024];
int count=0;
int temp=0; while((temp=in.read())!=(-1))
{
all[count++]=(byte)temp;
}
System.out.println(new String(all,0,count)); } catch (Exception e) {
// TODO: handle exception
}

五:合并流 SequenceInputStream

     /*
*合并流 SequenceInputStream
*/
public static void sequenceInputStreamTest()
{
String filePathA="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
String filePathB="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
try {
InputStream inA=new FileInputStream(filePathA);
InputStream inB=new FileInputStream(filePathB); SequenceInputStream sequenceInputStream=new SequenceInputStream(inA,inB);
byte [] all=new byte[1024];
int count=0;
int temp=0;
while((temp=sequenceInputStream.read())!=(-1))
{
all[count++]=(byte)temp;
} System.out.println(new String(all,0,count)); // sequenceInputStream.read(all); 如何不是一个一个字节的访问,输出的只是inB读入的文字
// System.out.println(new String(all));
inA.close();
inB.close(); } catch (Exception e) {
// TODO: handle exception
}
}

六:压缩http://snowolf.iteye.com/blog/465433

java IO其他流的更多相关文章

  1. Java Io 字符流

    Java Io 字符流包含: 1. InputStreamReader  它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite  它是char流到byt ...

  2. Java IO 嵌套流、文本的输入输出和存储

    Java IO 嵌套流.文本的输入输出和存储 @author ixenos 1.   组合流过滤器(嵌套流) a)    跨平台文件分割符:常量字符串 java.io.File.seperator 等 ...

  3. Java IO 转换流 字节转字符流

    Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...

  4. Java IO 过滤流 BufferedInput/OutputStream

    Java IO 过滤流 BufferedInput/OutputStream @author ixenos 概念 BufferedInput/OutputStream是实现缓存的过滤流,他们分别是Fi ...

  5. Java IO 节点流 FileInput/OutputStream

    Java IO 节点流 FileInput/OutputStream @author ixenos 节点流之 文件流 文件读写是最常见的I/O操作,通过文件流来连接磁盘文件,读写文件内容 1.文件的读 ...

  6. Java IO 理解流的概念

    Java IO 理解流的概念 @author ixenos 在理解流时首先理解以下概念 1.流的来源和去向一般在构造器指出 2.方法中的形参一般是将流输出到某个位置,读取(INPUT)流从流读出数据( ...

  7. Java IO 节点流 ByteArrayInput/OutputStream

    Java IO 节点流 ByteArrayInput/OutputStream @author ixenos ByteArrayInputStream 包含一个内部缓冲区(字节数组byte[]),该缓 ...

  8. Java IO: 字符流的Buffered和Filter

    作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...

  9. Java IO: 字符流的Piped和CharArray

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...

  10. Java IO包装流如何关闭?

      问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: ...

随机推荐

  1. hadoop中使用hprof工具进行性能分析

    在编写完成MapReduce程序之后,调优就成为了一个大问题.如何使用现有工具快速地分析出任务的性能?   对于本地的java应用程序,进行分析可能稍微简单,但是hadoop是一个分布式框架,MapR ...

  2. nginx 反向代理与负载均衡应用实践

    集群介绍 集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可以彼此通信,协同向 ...

  3. IO模型之IO多路复用 异步IO select poll epoll 的用法

    IO 模型之 多路复用 IO 多路复用IO IO multiplexing 这个词可能有点陌生,但是如果我说 select/epoll ,大概就都能明白了.有些地方也称这种IO方式为 事件驱动IO ( ...

  4. pycharm安装---优秀的IDE

    概述:pycharm当前来讲是python最优秀的IDE. 1. 官网下载安装包 2.解压 3. cd 到解压的bin文件中 4.执行sh ./pycharm.sh 5.锁定到图标中

  5. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery

    一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...

  6. 流程管理软件(BPM)功能简介

    易协流程管理系统实现将人为控制的业务活动,通过信息化手段实现系统控制,降低人为控制管理的风险以及促进企业的各项决策方针的顺利实施. 系统目标: 实现管理的规范化.制度化.程序化: 帮助企业将内控制度流 ...

  7. nginx实现多个域名共享80端口

    server { listen 80; server_name server8085.duchong.cn; location / { proxy_pass http://127.0.0.1:8085 ...

  8. <转> win7下破解已安装的VS2008

    http://renfan.blog.51cto.com/3466724/754301 在win7系统下,已安装的VS2008维护界面是不显示序列号输入的,需要按以下步骤进行才能破解 1.点击“卸载/ ...

  9. Nginx源码完全注释(5)core/ngx_cpuinfo.c

    /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #include <ngx_config.h> #include ...

  10. 英文单词cipher 和password的区别,用法有什么不同,

    ['saɪfə(r)] cipher 指一套密码系统,比如电影<风声>中破译的那个系统叫cipher:password 则指进入的指令,比如你的qq密码,电脑密码等叫password.总之 ...