文件:文件可认为是相关记录或放在一起的数据的集合。文件一般保存在硬盘、U盘、光盘、云盘的媒介中。

JAVA API:java.io.File类可操作文件

File对象的构建

File file=new File(String pathname);
需要注意的是:String pathname的格式为:e:\\test.txt或e:/test.txt

File类常用的方法:

boolean exists()【判断文件或目录是否存在】

boolean isFile()【判断是否是文件】

boolean isDirectory()【判断是否是目录】

String getPath()【返回此对象表示的文件的相对路径名】

String getAbsolutePath()【返回此对象表示的文件的相对路径名】

String getName()【返回此对象表示的文件或目录的名称】

booblean delete()【删除此对象指定的文件或目录】

booblean creatNewFile()【创建名称的空文件,不创建文件夹】

long length()【返回文件的长度,单位为字节】

创建文件的方法:

public void create(File file) {

        if (!file.exists()) {

            try {

                file.createNewFile();

                System.out.println("文件已创建!");

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

删除文件的方法:

 public void delete(File file) {

        if (file.exists()) {

            file.delete();

            System.out.println("文件已删除!");

        }

    }

显示文件的方法:

public void showFileInfo(File file) {

        if (file.exists()) { // 判断文件是否存在

            if (file.isFile()) { // 如果是文件

                System.out.println("名称:" + file.getName());

                System.out.println("相对路径: " + file.getPath());

                System.out.println("绝对路径: " + file.getAbsolutePath());

                System.out.println("文件大小:" + file.length() + " 字节");

            }

            if (file.isDirectory()) {

                System.out.println("此文文件是目录");

            }

        } else

            System.out.println("文件不存在");

    }

流:流是指一连串流动的字符,是以先进先出方式发送信息的通道。

常用的文件读写类

文本文件的读写

字节流方式:FileInputStream、FileOutputStream

字符流方式:BufferedReader、BufferedWriter

二进制文件的读写

DataInputStream、DataOutputStream

字节流方式读写文本

FileInputStream 读文本文件

InputStream类常用方法

int read()【从此输入流中读取一个数据字节】

int read(byte[] b)【从此输入流中将最多b.length个字节的数据读入一个byte数组中。】

int read(byte[] b,int off,int len)【从此输入流中将最多len个字节的数据读入一个byte数组中】

void close()【关闭此文件输入流并释放与此流有关的所有系统资源】

int available() 【返回下一次对此输入流调用的方法可以不受阻塞的从此输入流读取(或跳过)的估计剩余字节】

子类FileInputStream常用的构造方法

FileInputStream(File file)【通过文件对象创建FileInputStream对象】

FileInputStream(String name)【通过name文件路径创建FileInputStream对象】

FileOutputStream 写文本文件

OutputStream类常用方法

void write(int c) 【将指定字节写入此文件输出流。】

void write(byte[] buf)【将 b.length 个字节从指定 byte 数组写入此文件输出流中。】

void write(byte[] b,int off,int len) 【将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。】

void close( ) 【关闭此文件输出流并释放与此流有关的所有系统资源。】

子类FileOutputStream常用的构造方法

FileOutputStream (File file) 【创建一个向指定 File 对象表示的文件中写入数据的文件输出流。】

FileOutputStream(String name) 【创建一个向具有指定名称的文件中写入数据的输出文件流。】

FileOutputStream(String name, boolean append) 【创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。】

需要注意的是:

1、前两种构造方法在向文件写数据时将覆盖文件中原有的内容。

2、创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件。

3、FileInputStream和FileOutputStream创建的流属于节点流,直接操纵数据源。

字符流方式读写文本文件

BufferedReader读文本文件

实例:

    //缓冲流的使用
public static void main(String[] args) throws Exception {
//BufferedReader读取文件信息
//reader类的子类FileReader
FileReader fr=new FileReader("f:/text.txt");
BufferedReader br=new BufferedReader(fr);
//利用缓冲流读取信息
String line=br.readLine();//每次读一行数据
while(line!=null){
System.out.println(line);
line=br.readLine();
}
//关闭流
br.close();
fr.close();
}

使用字符流读取文本文件相关类

Reader

FileReader(节点流)

BufferedReader(处理流)

Reader类常用方法

int read( )

int read(char[] c)

int read(char[] c,int off,int len)

void close( )

子类BufferedReader常用的构造方法

public  BufferedReader(Reader in)   //in通常使用FlieReader对象

子类BufferedReader特有的方法

public String readLine()   //读取一行信息

BufferedWriter写文本文件

使用字符流写文本文件相关类

Writer

FileWriter(节点流)

BufferedWriter(处理流)

Writer类常用方法

void write(String str)

void write(String str,int off,int len)

void close()

void flush()

子类BufferedWriter常用的构造方法

BufferedReader(Writer out) //in通常使用FlieWriter对象

字节流方式读写二进制文件

DataInputStream类读取二进制文件(处理流)

FileInputStream的子类

与FileInputStream类结合使用读取二进制文件

DataOutputStream类写二进制文件(处理流)

FileOutputStream的子类

与FileOutputStream类结合使用写二进制文件

序列化与反序列化的过程:

package com.zx5;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
//--------------------------------序列化的过程-----------------------------------------------
public class Test {
//把对象写入到磁盘文件,叫做序列化,,,,,反序列化就是把磁盘文件还原
public static void main1(String[] args) throws Exception {
//集合都可以序列化
List<Object> list=new ArrayList<Object>();
list.add(10);
list.add("200");
list.add(23.23);
OutputStream out=new FileOutputStream("f:/text.txt");
//objectOutputStream序列化的流
ObjectOutputStream oos=new ObjectOutputStream(out);
//写入对象
oos.writeObject(list);
//关闭流
oos.close();
out.close();
}
//----------------------------------------反序列化------------------------------
public static void main(String[] args) throws Exception {
//反序列化:把二进制文件中的内容恢复成对象
//字节输入流对象
InputStream in=new FileInputStream("f:/text.txt");
//创建一个ObjectInputStream对象
ObjectInputStream ois=new ObjectInputStream(in);
//读取readObject()
Object obj=ois.readObject();//读出对象
List<Object> list=(List<Object>) obj;
for (Object object : list) {
System.out.println(object);
}
}
}

需要注意的是:

如果不对钱进行序列化,可用transient进行修饰,如:private transient double money;

IO、IO序列化的更多相关文章

  1. Netty学习二:Java IO与序列化

    1 Java IO 1.1 Java IO 1.1.1 IO IO,即输入(Input)输出(Output)的简写,是描述计算机软硬件对二进制数据的传输.读写等操作的统称. 按照软硬件可分为: 磁盘I ...

  2. java.io.Serializable 序列化问题

    java.io.Serializable 序列化问题 Person.java package a.b.c; public class Person implements java.io.Seriali ...

  3. IO流--序列化流与反序列化流

    IO流--序列化流与反序列化流: 序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream(); 反序列化流:把文本文件中的流对象还原成对象ObjectInputSream(): ...

  4. java.io.Serializable 序列化问题【原】

    java.io.Serializable 序列化问题 Person.java package a.b.c; public class Person implements java.io.Seriali ...

  5. IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO

    IO模型介绍: * blocking IO 阻塞IO * nonblocking IO 非阻塞IO * IO multiplexing IO多路复用 * signal driven IO 信号驱动IO ...

  6. python 全栈开发,Day44(IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)

    昨日内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yield,greenlet 遇到IO gevent: 检测到IO,能够使用greenlet实现自动切换,规避了IO阻 ...

  7. {python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO模型比较分析 selectors模块

    python之IO多路复用 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 ...

  8. Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...

  9. (IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)

    参考博客: https://www.cnblogs.com/xiao987334176/p/9056511.html 内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yi ...

  10. java.io.Serializable 序列化接口

    什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是 ...

随机推荐

  1. ubuntu下部署mongodb以及设置允许远程连接

    最近因为项目原因需要在阿里云服务器上部署mongodb,网上查阅了一些资料,特此记录一下步骤 1.运行apt-get install mongodb命令安装mongodb服务(如果提示找不到该pack ...

  2. 从0到1发布一个npm包

    从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...

  3. 【JavaScript】论一个低配版Web实时通信库是如何实现的之二( EventSource篇)

    前情提要 「 话说上回说到!那WebSocket大侠,巧借http之内力,破了敌阵的双工鸳鸯锁,终于突出重围. 然而玄难未了,此时web森林中飞出一只银头红缨枪,划破夜色. "莫非!?&qu ...

  4. random库的使用

    一.random库介绍 random库是使用随机数的Python标准库 伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素 random库主要用于生成随机数 使用random库:import ran ...

  5. Spring Context 你真的懂了吗

    今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识. 1. context 是什么 我们经常在编程中见到 contex ...

  6. hibernate.validator 与 jackson

    1.使用hibernate.validator校验非空,在FormData类中 name字段上面加@NotEmpty @NotEmpty(message = "姓名必填") pri ...

  7. 简单架构:反射实现抽象工厂+IDAL接口完全独立DAL

    一.普通架构中存在的问题 StudentDB数据库,包含一张StudentInfoTB表,结构如下: s_id int primary key identity(1,1), s_name Nvarch ...

  8. Qt无边框窗体-最大化时支持拖拽还原

    目录 一.概述 二.效果展示 三.demo制作 1.设计窗体 2.双击放大 四.拖拽 五.相关文章 原文链接:Markdown模板 一.概述 用Qt进行开发界面时,既想要实现友好的用户交互又想界面漂亮 ...

  9. Django--路由层、伪静态页面、虚拟环境、视图层

    路由层: 在路由匹配的时候,第一个参数是一个正则表达式,这也就意味着在路由匹配的时候按照正则匹配的规则去匹配,路由匹配的顺序是从上往下依次匹配的,只要匹配到一个,就会执行对应的函数,就不会执行下面的函 ...

  10. JDBC之PreparedStatement

    JDBC之PreparedStatement 一.java.sql.PreparedStatement接口简介 该接口表示预编译的 SQL 语句的对象. SQL 语句被预编译并存储在 Prepared ...