Java的IO

1.  Java中有种类

按照流(inputStreamoutputStream 

按照(可地方 FileReader理流(是个已存调用BufferedReader构造要带一数。流的链接。) 
照处理数据的单位字节流和字符流。字节流继承 InputStream  OutputStream符流继承InputStreamReader OutputStreamWriter 

2.  字节流何转为字 

字节InputStreamReaderInputStream 

字节OutputStreamWriterOutputStream 

3.  如何将一java象序列到文件里 

java类必Serializable抽象记作用。 

1. //对象输出流 

2.   ObjectOutputStream objectOutputStream =

3. new ObjectOutputStream(new FileOutputStream(new File("D://obj"))); 

4.   objectOutputStream.writeObject(new User("zhangsan", 100)); 

5.   objectOutputStream.close(); 

6.   //对象输入流 

7.   ObjectInputStream objectInputStream =

8. new ObjectInputStream(new FileInputStream(new File("D://obj"))); 

9.   User user = (User)objectInputStream.readObject(); 

10.   System.out.println(user); 

11.   objectInputStream.close(); 

4.  字节流字符流的区别2017-11-23-wzz 

字节一个 使到一对应的字节数是UTF-83先去查指的字 可以处理型数据,MP3AVI 能处处理先考使流,。字byte类型byte准,OutputStreamInputStream 
字符2Unicode别操组或字符理单1字节所以Java机将2字节Unicode字符,所以比较图片字节流好用字符个字javaReaderWriter两个 

5.  如何实对象克隆

有两 

1).   Cloneable 接口并重  Object   clone()法; 
2).   Serializable 口,反序实现码如下。 

12. import java.io.ByteArrayInputStream;

13. import java.io.ByteArrayOutputStream;

14. import java.io.ObjectInputStream;

15. import java.io.ObjectOutputStream;

16. import java.io.Serializable;

17. public class MyUtil {

18. private MyUtil() {

19. throw new AssertionError();

20. }

21. @SuppressWarnings("unchecked")

22. public static T clone(T obj) throws Exception {

23. ByteArrayOutputStream bout = new ByteArrayOutputStream();

24. ObjectOutputStream oos = new ObjectOutputStream(bout);

25. oos.writeObject(obj);

26. ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());

27. ObjectInputStream ois = new ObjectInputStream(bin);

28. return (T) ois.readObject();

29. // 说明:调用 ByteArrayInputStream  ByteArrayOutputStream 对象的 close 方法没有任何意 

30. // 这两个基于内存的流只垃圾回收器清理对象就能够释放资源,这一点不同于对外部资源(如文件流)的释 

31. }

32. }

测试 

1. import java.io.Serializable; 

2. /** 

3. *  

4.  */ 

5. class Person implements Serializable { 

6. private static final long serialVersionUID = -9102017020286042305L;

7. private String name; //  

8. private int age; //  

9. private Car car; //  

10. public Person(String name, int age, Car car) {

11. this.name = name;

12. this.age = age;

13. this.car = car;

14. }

15. public String getName() {

16. return name;

17. }

18. public void setName(String name) {

19. this.name = name;

20. }

21. public int getAge() {

22. return age;

23. }

24. public void setAge(int age) {

25. this.age = age;

26. }

27. public Car getCar() {

28. return car;

29. }

30. public void setCar(Car car) {

31. this.car = car;

32. }

33. @Override

34. public String toString() {

35. return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";

36. }

37. }

1. /** 

2. * 小汽车 

3. */ 

4. class Car implements Serializable { 

5. private static final long serialVersionUID = -5713945027627603702L;

6. private String brand; //  

7. private int maxSpeed; // 最高时 

8. public Car(String brand, int maxSpeed) { 

9. this.brand = brand; 

10. this.maxSpeed = maxSpeed;

11. }

12. public String getBrand() {

13. return brand;

14. }

15. public void setBrand(String brand) {

16. this.brand = brand;

17. }

18. public int getMaxSpeed() {

19. return maxSpeed;

20. }

21. public void setMaxSpeed(int maxSpeed) {

22. this.maxSpeed = maxSpeed;

23. }

24. @Override

25. public String toString() {

26. return "Car [brand=" + brand + ", maxSpeed=" + maxSpeed + "]";

27. }

28. }

1. class CloneTest { 

2. public static void main(String[] args) { 

3. try { 

4. Person p1 = new Person("Hao LUO", 33, new Car("Benz", 300)); 

5. Person p2 = MyUtil.clone(p1); // 深度克 

6. p2.getCar().setBrand("BYD"); 

7. // 修改克隆的 Person  p2 关联的汽车对象的品牌 

8. // 原来的 Person 对象 p1 关联的汽车不会受到任何影响 

9. // 因为在克隆 Person 时其关联的汽车对象也被克隆了 

10. System.out.println(p1);

11. } catch (Exception e) {

12. e.printStackTrace();

13. }

14. }

15. }

注意:基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过泛型限定,可以检查出要克隆的对

象是否支持序列化,这项检查成的是在异常种是使Object   clone 

方法编译好过 

6.  什么java序列,如何实java列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进

写操对象列化流进的问题。 

将需 Serializable 实现

implements Serializable只是被序使个输(FileOutputStream)构造

ObjectOutputStream(对象流)使ObjectOutputStreamwriteObject(Object obj)

可以obj对象写出()要恢复的 

你可能感兴趣的:(java,开发语言)