JAVA-IO(3)操作简介
来源:互联网 发布:微信轰天雷炸群软件 编辑:程序博客网 时间:2024/06/16 21:05
Java IO操作主要指的是使用Java进行输入输出操作,Java的所有操作类都早Java.io包中,在使用时需要导入此包.
上两篇博客分别讲解了几个数据流
篇幅一 :
http://blog.csdn.net/haiyang_duan/article/details/76769025
篇幅二:
http://blog.csdn.net/haiyang_duan/article/details/76772196
下面接着简单介绍有关IO的内容.
一. System对IO的支持
使用OutputStream想屏幕输出
System.out
OutputStream out = System.out; try{ out.write("hello".getBytes()); }catch (IOException e){ e.printStackTrace; } try{ out.close(); }catch (IOException e){ e.printStackTrace; }
System.err
String str = "hello"; try{ System.out.println(Integer.parseInt(str)); }catch (IOException e){ System.err.println(e); }
注意 :
System.out和System.err都是PrintStream的实例化对象,而且通过示例代码可以发现,两者都可以输出错误信息.但是一般来讲System.out是将信息显示给用户看,是正常的信息,而System.err的信息刚好相反,是不希望用户看到的.所以,如果要输出错误信息,最好不要使用System.out,而直接使用System.err.
System.in
//控制台输入 InputStream in = System.in; System.out.print("请输入内容:"); byte[] b = new byte[1024]; int read = in.read(b); System.out.println(new String(b,0,read));
上述代码虽然可以实现从键盘中输入数据的功能,但是有以下缺陷:
# 指定了输入数据的长度,使其受到限制;
# 如果byte数组的长度为奇数,有可能出现中文乱码(一个中文为两个字节);
所以应使用标准的输入方式,将输入数据暂放到一个内存中,然后再一次性读取数据,数据只读一次就不会有乱码,而且也不会受长度的限制,如下
//控制台输入得的标准格式 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str = br.readLine(); System.out.println(str);
二. 输入输出重定向
输出重定向
将输出内容指定到某文件
System.setOut(new PrintStream(new FileOutputStresam("C:" + File.separator + "test")));System.out.println("hello!");
三. BufferedReader类
BufferedReader中定义的构造方法只能接收输入流的实例,所以必须使用字符输入流和字节输入流的转换类InputStreamReader将字节输入流System.in变为字符流.
所以就有了键盘输入的标准模式:
//控制台输入得的标准格式 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str = br.readLine(); System.out.println(str);
四. 数据操作流
在IO中,提供了两个与平台无关的数据操作流:
分别为数据输出流DataOutputStream和数据输入流DataInputStream
通常数据输出流会按照一定的格式将数据输出,在通过数据输入流按照一定的格式将数据读入.
五. 对象序列化
对象序列化就是把一个对象转变为二进制的一种方法
一个类的对象要想被序列化,则对象所在的类必须实现java.io.Serializable接口
定义可序列化的类
class Person implements Serializable{ private static final long serialVersionUID = 1L; private transient String name; private int age; public Person(String name , int age){ this.name = name; this.age = age; } @Override public String toString() { return "姓名:" + name + "--" + "年龄:" + age; }}
序列化
//序列化 File f = new File("C:" + File.separator + "test"); OutputStream fos = new FileOutputStream(f); ObjectOutputStream oos = new ObjectOutputStream(fos); Person p = new Person("段海洋", 26); oos.writeObject(p); oos.close(); fos.close();
反序列化
File f = new File("C:" + File.separator + "test"); //反序列化 InputStream fis = new FileInputStream(f); ObjectInputStream ois = new ObjectInputStream(fis); Object obj = ois.readObject(); ois.close(); fis.close(); System.out.println(obj);
注意:
一个对象被序列化以后,只有属性被序列化,原因在于,每个对象的方法相同,而属性却不一定相同,也就是说对象保存的只是属性信息.
- JAVA-IO(3)操作简介
- JAVA-IO(1)操作简介
- JAVA-IO(2)操作简介
- Java IO简介
- Java IO简介
- java IO简介
- JAVA IO/NIO简介
- 简介JAVA IO
- Java IO简介
- Java IO库简介
- java IO 简介
- Java IO简介
- Java IO流简介
- Java---IO加强(3)-IO流的操作规律
- Java IO流-IO 流简介
- Java自学--IO操作(3) 管道流
- Java之IO与File操作3
- Java.io.*操作
- Java类的设计----方法的重写、覆盖
- 操作系统的页式管理
- 要素内部几何空间查询
- 【NOI2015模拟8.17】最短路(shortest)
- #HDU 1159 Common Subsequence
- JAVA-IO(3)操作简介
- hdu6070
- HDU 4609 3-idiots
- JS基础--常用对象
- Java8新时间与日期API—本地时间与时间戳
- 最长递增子序列
- windows 无法连接xxxxx (无法连接无线路由器)
- 学习笔记--操作系统的知识点的概括(思维导图形式)
- 监听者模式示例