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("\r\n追加的内容!\r\n".getBytes());
99 // } catch (Exception e) {
100 // // TODO Auto-generated catch block
101 // e.printStackTrace();
102 // }
103 //
104 //
105 // insert("out.txt", 3, "\r\n插入的内容\r\n");
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()+"\n"+"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 }