IO加强(2)

import java.io.IOException;
import java.io.PrintStream;

import org.junit.Test;

/*
 * PrintStream、PrintWriter中的输出有两个方法:
 * write() ----和字节输出流一样,以字节为单位输出,是数据的原样输出--值--面向计算机
 * print() ----把数据转换成字符串输出,不是数据的原样输出--值的表现形式---面向用户的
 * 打印流在构造时可以指定字符编码 
 */
public class PrintStreamDemo {

	@Test
	public void test1() throws IOException {
		// PrintStream p=System.out;
		// p.println("aaa");

		System.setOut(new PrintStream("files/log.txt"));
		for (int i = 0; i < 100; i++) {
			System.out.print(i + " ");
		}
		System.out.println();
	}

	@Test
	public void test2() throws IOException {
		PrintStream p2 = new PrintStream("files\\p.txt", "gbk");
		p2.write(97);
		p2.write(353);// 只写最后一个字节
		p2.write(354);
		p2.print(97);
		p2.print(353);
		p2.flush();

		/*
		 * void print(int n){ out.write( String.valueOf(n)) }
		 */
	}
}
import org.junit.Test;

/*相比PrintStream,PrintWriter以下两点不同:
 1) 带缓存的,输出时要flush()
 2) PrintWriter在创建时可以指定为自动刷缓存, 只对println、printf 或 format方法有效
 */
public class PrintWriterDemo {
	@Test
	// 演示输出时必须带缓存( close()方法中会自动调用flush() )
	public void test1() throws IOException {
		PrintWriter pw = new PrintWriter("files\\pw.txt", "gbk");
		pw.print("abc123qq中文qq");
		// pw.flush();
		pw.close();
	}

	@Test
	// 演示PrintWriter中的自动刷新功能----只对println、printf 或 format方法有效
	public void t2() throws IOException {
		PrintWriter pw2 = new PrintWriter(new FileOutputStream(
				"files\\pw2.txt"), true);
		
		for (int i = 0; i < 5; i++) {
			//pw2.print("abc123qq中文"+i+"\r\n");//自动刷新功能无效
			pw2.println("abc123qq中文" + i);// 自动刷新功能有效
		}
		// pw2.flush();
		// pw2.close();
	}
}

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import org.junit.Test;

public class ArrayIODemo {
   @Test 
   public void test1(){
	   ByteArrayInputStream bis=new ByteArrayInputStream("adssad221111".getBytes());
	   ByteArrayOutputStream bos=new ByteArrayOutputStream();
	   int ch=0;
	   while((ch=bis.read())!=-1){
		   bos.write(ch);
	   }
	   System.out.println(bos);
	   //System.out.println(bos.toString());
   }
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

public class SequenceIODemo {
	public static void main(String[] args) {

		try {
			ArrayList<FileInputStream> list = new ArrayList<FileInputStream>();
			list.add(new FileInputStream("files/seq/1.txt"));
			list.add(new FileInputStream("files/seq/2.txt"));
			list.add(new FileInputStream("files/seq/3.txt"));

			Enumeration<FileInputStream> en = Collections.enumeration(list);
			// 入口
			SequenceInputStream sis = new SequenceInputStream(en);// ※

			// 流拷贝
			// 把序列流中的数据写到一个文件中
			FileOutputStream out = new FileOutputStream("files/seq/a.txt");
			byte b[] = new byte[8];
			int len = 0;
			while ((len = sis.read(b)) != -1) {
				out.write(b, 0, len);
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值