1 package IOTest; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.ObjectInput; 8 import java.io.ObjectInputStream; 9 import java.io.ObjectOutput; 10 import java.io.RandomAccessFile; 11 12 public class IOMain { 13 14 public static void main(String[] args) throws IOException { 15 16 /* 17 * 1 18 */ 19 // try (FileReader fr = new FileReader("E:/Workspase/MyEclipse 2015 CI/Shulie/src/A2.java")) { 20 // char[] cbuf = new char[32]; 21 // int hasRead = 0; 22 // while((hasRead = fr.read(cbuf))>0){ 23 // System.out.println(new String(cbuf, 0, hasRead)); 24 // } 25 // 26 // } catch (FileNotFoundException e) { 27 // // TODO Auto-generated catch block 28 // e.printStackTrace(); 29 // } 30 31 32 /* 33 * 2 节点流 34 */ 35 // File f = new File("newfile.txt"); 36 // 37 // try( 38 // FileInputStream fis = new FileInputStream("E:/Workspase/MyEclipse 2015 CI/Shulie/src/A2.java"); 39 // FileOutputStream fos = new FileOutputStream(f)) 40 // { 41 // byte[] buf = new byte[1024]; 42 // int hasRead = 0; 43 // while((hasRead = fis.read(buf))>0){ 44 // fos.write(buf, 0, hasRead); 45 // } 46 // 47 // }catch(Exception e){ 48 // e.printStackTrace(); 49 // } 50 51 52 /* 53 * 3 转换流 54 */ 55 // try (InputStreamReader reader = new InputStreamReader(System.in); 56 // BufferedReader bf = new BufferedReader(reader) ){ 57 // String line = null; 58 // while((line = bf.readLine()) !=null){ 59 // if("exit".equals(line)){ 60 // System.exit(1); 61 // } 62 // System.out.println(line); 63 // } 64 // } catch (Exception e) { 65 // // TODO Auto-generated catch block 66 // e.printStackTrace(); 67 // } 68 69 /* 70 * 4 重定向输出 71 */ 72 // try (PrintStream ps = new PrintStream(new FileOutputStream("out.txt"))) { 73 // 74 // System.setOut(ps); 75 // System.out.println(new Scanner(System.in).next()); 76 // System.out.print(new IOMain()); 77 // } catch (Exception e) { 78 // // TODO Auto-generated catch block 79 // e.printStackTrace(); 80 // } 81 // 82 // 83 84 85 /* 86 * 5 RandomAccessFile 87 */ 88 // 89 // try (RandomAccessFile raf = new RandomAccessFile("newfile.txt", "rw");) { 90 // System.out.println("指针初始位置:"+raf.getFilePointer()); 91 // raf.seek(300); 92 // byte[] bbuff = new byte[1024]; 93 // int hasRead = 0; 94 // while((hasRead = raf.read(bbuff)) > 0){ 95 // System.out.println(new String(bbuff, 0, hasRead)); 96 // } 97 // raf.seek(raf.length()); 98 // raf.write(" 追加的内容! ".getBytes()); 99 // } catch (Exception e) { 100 // // TODO Auto-generated catch block 101 // e.printStackTrace(); 102 // } 103 // 104 // 105 // insert("out.txt", 3, " 插入的内容 "); 106 // FileInputStream fis = new FileInputStream(new File("out.txt")); 107 // byte[] bbuff = new byte[1024]; 108 // int hasRead = 0; 109 // while((hasRead = fis.read(bbuff)) > 0){ 110 // System.out.println(new String(bbuff, 0, hasRead)); 111 // } 112 // 113 // 114 /* 115 * 6 序列化 116 */ 117 118 119 // try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.txt"));) { 120 // Person p1 = new Person("Jeff", 23); 121 // oos.writeObject(p1); 122 // } catch (Exception e) { 123 // // TODO Auto-generated catch block 124 // e.printStackTrace(); 125 // } 126 127 try (ObjectInputStream oip = new ObjectInputStream(new FileInputStream("object.txt"));) { 128 Person p2 = (Person) oip.readObject(); 129 System.out.println("name:"+p2.getName()+" "+"age:"+p2.getAge()); 130 } catch (ClassNotFoundException e) { 131 // TODO Auto-generated catch block 132 e.printStackTrace(); 133 } 134 135 136 137 138 139 140 } 141 public static void insert(String fileName, long pos, String insertContent) throws IOException{ 142 File temp = File.createTempFile("temp", null); 143 temp.deleteOnExit(); 144 try ( 145 RandomAccessFile raf = new RandomAccessFile(fileName, "rw"); 146 FileOutputStream fos = new FileOutputStream(temp); 147 FileInputStream fis = new FileInputStream(temp);) { 148 raf.seek(pos); 149 byte[] buff = new byte[64]; 150 int hasRead = 0; 151 while((hasRead = raf.read(buff))>0){ 152 fos.write(buff, 0, hasRead); 153 } 154 raf.seek(pos); 155 raf.write(insertContent.getBytes()); 156 while((hasRead = fis.read(buff))>0){ 157 raf.write(buff, 0, hasRead); 158 } 159 } catch (Exception e) { 160 // TODO Auto-generated catch block 161 e.printStackTrace(); 162 } 163 } 164 165 } 166 class Person implements java.io.Serializable{ 167 private String name; 168 private int age; 169 public Person(String name, int age){ 170 this.name = name; 171 this.age = age; 172 } 173 public String getName() { 174 return name; 175 } 176 public void setName(String name) { 177 this.name = name; 178 } 179 public int getAge() { 180 return age; 181 } 182 public void setAge(int age) { 183 this.age = age; 184 } 185 186 } 187 class PersonNew implements java.io.Externalizable{ 188 private String name; 189 private int age; 190 public PersonNew(String name, int age){ 191 this.name = name; 192 this.age = age; 193 } 194 public String getName() { 195 return name; 196 } 197 public void setName(String name) { 198 this.name = name; 199 } 200 public int getAge() { 201 return age; 202 } 203 public void setAge(int age) { 204 this.age = age; 205 } 206 @Override 207 public void writeExternal(ObjectOutput out) throws IOException { 208 out.writeObject(new StringBuffer(name).reverse()); 209 out.writeInt(age); 210 211 } 212 @Override 213 public void readExternal(ObjectInput in) throws IOException, 214 ClassNotFoundException { 215 this.name = ((StringBuffer)in.readObject()).reverse().toString(); 216 this.age = in.readInt(); 217 } 218 219 }