在JAVA编程中,我们获取和输出信息时,采取IO流操作。
我们一般是通过文件对这些信息进行操作,那么首先就要操作文件。java.io.File类表示文件(目录)的信息(名称、大小等),并能对文件的内容进行访问,我们可以通过File类在程序中操作硬盘上的文件和目录。一般我们常用的包括获取当前路径getCanonicalPath();创件一个新的文件目录mkdir();判断文件是否存在exists();创件新的文件对象createNewFile();获取路径下的全部文件listFiles();对操作文件的过滤 FileFilter类;判断一个字符串类型的文件名后缀endsWith()。
Java中的IO流是实现输入/输出的基础。按照流的方向不同:分为输入流和输出流。按照处理数据单位的不同:分为字节流(8位byte)和字符流(16位char)。按照功能不同:分为节点流和处理流。所有面向字节的流类都继承于InputStream(输入流)或OutputStream(输出流)这两个是抽象类;面向字符的流类都继承于Reader(读取字符流)或Writer(写入字符流)这两个抽象类,我们可以利用它们的子类来完成不同的功能。所有的流类操作都分为建立流、操作流、关闭流。常用的文件输入输出流是 FileInputStream 和FileOutputStream 。
程序访问IO的次数越少,性能就越高,原因就在于CPU和内存的速度》》》》远大于硬盘或其他外部设备的速度。那么我们为了提高 IO(输入输出)的性能,在写入和读取操作时,都加上缓冲流BufferedInputStream && BufferedOutputStream,这种流模式为 IO 操作提供了缓冲区,从而减少访问IO的次数。
Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端,这就需要有一种可以在两端传输数据的协议,Java序列化机制就是为了解决这个问题而产生。简单说就是保存在内存中的各种对象的状态,并且把保存的对象状态再读出来。什么情况下我们需要序列化呢?1、当你想把的内存中的对象保存到一个文件中或者数据库中时候;2、当你想用套接字在网络上传送对象的时候;3、当你想通过RMI传输对象的时候。序列化是一种将 Object 转换为 byte 序列,将对象以一连串的字节描述的过程;反序列化是一种将这些字节重建成一个对象的过程。序列化包括有两个重要的概念1、序列化流(ObjectOutputStream),也就是将一个对象转化为序列化流。2、序列化接口(Serializable)。对象必须实现“序列化接口”才能进行序列化,否则将出现序列化的异常,Serializable 是一个空的接口,没有任何方法,仅作为序列化的一个标识。