IO加强(2)
程序员文章站
2024-03-04 22:27:48
...
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();
}
}
}