java常用IO流集合用法模板

时间:2023-02-15 19:32:59
package com.fmy;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Serializable;
import java.io.Writer; public class Demo1 { static File file1 =new File("D:/info1.txt");
static File file2 =new File("D:/info2.txt"); /**
* 使用字节流复制文本
*/
public static void demo1(){
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
byte []buf =new byte[1024];
int len;
while ((len=is.read(buf))!=-1) {
System.out.println(new String(buf,0,len));
os.write(buf, 0, len);
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 使用字符流赋值文本
*/
public static void demo2() {
Writer w=null;
Reader r=null;
try { w = new FileWriter(file2);
r = new FileReader(file1); char buf[] = new char[512];
int len;
while ((len=r.read(buf))!=-1) {
w.write(buf);
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
w.close();
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
/**
* 使用字节流赋值文本 ---使用包装流
*/
public static void demo3() {
InputStream is=null;
OutputStream os=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(os); byte[] buf =new byte[1024];
int len;
while ((len=bis.read(buf))!=-1) {
bos.write(buf,0,len);
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
bos.close();
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} /**
* 使用字符流赋值文本-使用包装流
*/
public static void demo4() {
Writer w = null;
Reader r = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
r = new FileReader(file1);
w = new FileWriter(file2);
br = new BufferedReader(r);
bw = new BufferedWriter(w);
String buf="";
while ((buf=br.readLine())!=null) {
bw.write(buf);
bw.newLine();
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
bw.close();
br.close();
} catch (Exception e2) {
e2.printStackTrace();
}
} } /**
* 字节流复制文本 ---运用转化流
*/
public static void demo5(){
BufferedWriter bw = null;
BufferedReader br = null;
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
bw = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String buf="";
while ((buf=br.readLine())!=null) {
bw.write(buf);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
} } /**
* 使用printStream 输出一个文本
*/
public static void demo6(){ OutputStream os = null;
PrintStream ps = null;
try {
os = new FileOutputStream(file2);
ps = new PrintStream(os);
ps.println(true);
ps.println("你好漂亮");
ps.print('我');
ps.print('呸');
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ps.close();
} } /**
* 使用printWriter输出一个文本
*/
public static void demo7(){ Writer w = null;
PrintWriter pw = null; try {
w = new FileWriter(file2);
pw = new PrintWriter(w);
pw.println(98);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
pw.close();
}
} /**
* 使用 CharArrayReader 和 CharArraysWriter 复制文本
*/
public static void demo8() {
Writer w = null;
Reader r = null;
CharArrayReader car = null;
CharArrayWriter caw = null;
try {
w = new FileWriter(file2);
r = new FileReader(file1);
char [] buf=new char[512];
caw = new CharArrayWriter();
int len;
while ((len=r.read(buf))!=-1){
caw.write(buf, 0, len);
}
car = new CharArrayReader(caw.toCharArray()); while ((len=car.read(buf))!=-1) {
w.write(buf, 0, len);
} } catch (Exception e) {
e.printStackTrace();
}finally{
if (car!=null) {
car.close();
}
if (caw!=null) {
caw.close();
}
try {
if (w!=null) {
w.close();
}
if (r!=null) {
r.close();
}
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
} } /**
* 使用ByteArrayInputStream和 ByteArrayOutputStream
*/
public static void demo9() { InputStream is = null;
OutputStream os = null;
ByteArrayInputStream bais = null;
ByteArrayOutputStream baos = null;
try {
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
baos = new ByteArrayOutputStream();
byte [] buf = new byte [1024];
int len; while ((len=is.read(buf))!=-1) {
baos.write(buf,0,len);
}
bais =new ByteArrayInputStream(baos.toByteArray());
while ((len=bais.read(buf))!=-1) {
os.write(buf, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bais.close();
baos.close();
os.close();
is.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
} /**
* DataInputStream DataOutputStream使用
*/
public static void demo10(){
DataInputStream dis = null;
DataOutputStream dos = null ;
InputStream is = null;
OutputStream os = null; try {
is = new FileInputStream(file2);
os = new FileOutputStream(file2);
dis = new DataInputStream(is);
dos = new DataOutputStream(os); dos.writeUTF("我喜欢你很久了");
dos.writeFloat(13); dos.close();
System.out.println(dis.readUTF());
System.out.println(dis.readFloat());
dis.close();
} catch (Exception e) {
e.printStackTrace();
} } /**
* 使用ObjectInputSteam和ObjectOutStream
*/
public static void demo11() { InputStream is = null;
OutputStream os = null;
ObjectInputStream ois = null;
ObjectOutputStream oos = null; try {
is = new FileInputStream(file1);
os = new FileOutputStream(file1);
oos = new ObjectOutputStream(os);
ois = new ObjectInputStream(is); oos.writeObject(new Studen(13,"嘿嘿",124125,123));
oos.close(); Studen s = (Studen)ois.readObject();
System.out.println(s.toString());
ois.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } public static void main(String[] args){
demo11();
} }
class Studen implements Serializable{
/**
*
*/
private static final long serialVersionUID = 8485022571103676109L; private transient int age = 1;//序列化时只会保存age的默认值0 如果是String则为null 其他略.... static private String name="张三"; //序列化时只会保存静态赋值的数值。不管后期对象如何new 序列化存储为张三
/*这个测试成功,是因为都在同一个机器(而且是同一个进程),
* 因为这个jvm已经把name加载进来了,所以获取的是加载好的
* name,如果你是传到另一台机器或者你关掉程序
* 重写写个程序读入Studen.obj,此时因为别的机器或新
* 的进程是重新加载name的,所以name信息就是初始时的信息。
* */
private int salary=100;//实验表明可以序列化
private int weight;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Studen [age=" + age + ", name=" + name + ", salary=" + salary
+ ", weight=" + weight + "]";
}
public Studen(int age, String name, int salary, int weight) {
super();
this.age = age;
this.name = name;
this.salary = salary;
this.weight = weight;
} }