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; } }