程序的主要任务就是操作数据,通过允许程序读取文件的内容或向文件写入数据,可以使程序应用更加广泛。

I/O(input/output)

在不同操作系统之下,所占的字节数也不同,一般认为

8.1.1使用File类操作文件或目录属性

File对象既可以表示文件,也可以表示目录。在程序中可以代表一个目录或文件。

可以用来查与文件相关的信息:名称、最后修改时间、文件大小等

语法:File file = new File(“文件目录”);路径分隔符可以用”/”,也可以用”\\”其中一个表示转义符

File常用方法

名称

说明

boolean exists()

判断文件或目录是否存在

boolean isFile()

判断是否是文件

boolean isDirectory()

判断是否是目录

String getPath()

返回此对象表示的文件的相对路径名

String getAbsolutePath()

返回此对象表示的文件的绝对路径名

String getName()

返回此对象表示的文件或目录的名称

boolean delete()

删除此对象指定的文件或目录

boolean createNewFile()

创建名称的空文件,不创建文件夹

long length()

返回文件的长度,单位为字节,若不存在,返回OL

8.2 JAVA的流

流是指一连串流动的字符串,是以先进先出的方式发送和接收数据的通道。

一个流是一个输入设备或输出设备的抽象表示,可以写入和读取其中的数据。

流具有明确的方向性,向流写入数据时这个流被称为输出流。

数据源分为源数据源和目标数据源

流为目标数据源。

流的分类:按照流向:输入流:只能读不能写

输出流:只能写不能读

数据单元不同:字节流:最小数据单位为8位字节(建议用于二进制数据)

字符流:最小数据单位16位字符(建用用于文本)

流向不同:字节输入流(InputStream基类)

字节输出流(OutputStream基类)

字符输入流(Reader基类)

字符输出流(Writer基类)

这四个基类都是抽象类,不能创建实例,只能作为实现更具体的输入或输出功能子类的基类。一个访问流的特征基本都是通过实现这四个抽象类的方法来建立的。

8.3.1 使用字节流读取文本文件

字节输入流(InputStream)的作用就是将文件中的数据输入到内存中

常用方法

名称

说明

int read()

读取一个字节数据

int read(byte[] b)

将数据读取到字节数组中

int read(byte[] ,int off,int len)

从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始

void close()

关闭输入流

int available()

返回输入流读取的估计字节数

无参的read()方法从输入流读取一个八位的字节,并转换位0~255的整数并返回。

有参的两个read()方法从输入流批量读取若干个字节。从文件或键盘读数据时,采用read(byte[]b)或int read(byte[] ,int off,int len)减少进行物理读文件或键盘的次数,提高输入/输出的操作效率。

常用InputStream的子类FilelnputStream类来实现文本文件内容的读取

1,  FilelnputStream(File file)。file指文件数据源。

File file = new File(“位置”);

InputStream in = new FileInputStream(file);

这样fileObject就和(位置)联系起来了

2,  FileInputStream(String name)

InputStream in = new FinputStream(“位置”);

使用FileInputStream读取文件

1,  引入相关的类

import java.io.IoException;

import java.io.InputStream;

import java.io.FileInputStream;

2,  创建一个文件输入流对象

InputStream fileObject = new FileInputStream(“位置”);

3,  利用文件输入流的方法读取文本文件的数据

fileObject.available();       //可读取的字节数

fileObject.read();       //读取文件的数据

4,  关闭文件输入流对象

fileObject.close();

流对象使用完毕后要关闭。

8.3.2 使用字节流写文本文件

字节输出流OutputStream类可以把内存中的数据输出到文件中。

常用方法

方法名称

说明

void wtire(int c)

写入一个字节数据

void write(byte[] buf)

写入数组buf的所有字节

void write(byte[] b,int off,int len)

将字节数组中从off位置开始,长度为len的字节数据输出到输出流中

void close()

关闭输出流

常用OutputStream的子类FileOutputStream类来实现向文本文件写入数据,常用的构造方法有以下三个。

1,  FileOutputStream(File file)。file指定文件目标数据源

File file = new File(“位置”);

FileOutputStream fos = new FileOutputStream(file);

2,     FileOutputStream(String name)。name指定文件目标数据源,包含路径信息。FileOutputStream fos = new FileOutputStream(“位置”);

3,  FileOutputStream(String name,boolean append),name指定文件目标数据源,append表示是否在文件末尾添加数据,若为true,则添加

FileOutputStream fos = new FileOutputStream(“位置”,true);

如果文件不存在,会自动生成一个空文件夹。若file或name表示的文件路径存在,但代表目录,就会抛出FileNotFoundException异常。

使用FileOutputStream写文本文件

1,  引入相关类

import java.io.IoException;

import java.io.OutputStream;

import java.io.FilePutputStream;

2,  构造一个文件输出流对象

OutputStream fos = new FileOutputStream(“位置”);

3,  利用文件输出流的方式把数据写入文本文件中

String str = “要输入的文字”;

byte[] words = str.getBytes();

//利用write方法将数据写入文件中去

fos.write(words,0,words.length);

4,  关闭文件输出流

fos.close();

8.3.4使用字符流读取文本文件

Reader类常用方法

名称

说明

int read()

从输入流中读取单个字符

int read(byte[] c)

从输入流中读取c.length长度的字符,保存到字符数组c中,返回实际读取的字符数

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

从输入流中读取最多len的长度字符,保存到字符数组c中,保存到位置从off位置开始,返回实际读取的字符长度

void close()

关闭流

FileReader类是Reader的子类

FileReader(String fileName);

fileName是指要从中读取数据的文件的名称。

Reader fr = new FileReader(“位置”);

使用FileReader读取文件

1,  引入相关的类

import java.io.Reader;

import java.io.FileReader;

import java.io.IoException;

2,  创建一个FileReader对象

Reader fr = new FileReader(“位置”);

3,  利用FileReader类的方法读取文本文件的数据

int read();   //读取单个字符

4,  关闭相关的流对象

fr.close();

字符输入流BufferedReader类

它是Reader类的子类,与FileReader类的区别在于BufferedReader类有缓冲区,可以先把一批数据读到缓冲区,避免每次都从数据源读取数据进行字符编码转换,从而提高效率。常见构造如下:BufferedReader(Reader in)

使用此构造方法创建字符输入对象如下:Reader fr = new FileReader(“位置”);

BufferedReader br = new BufferedReader(fr);

使用FileReader和BufferedReader读取文本文件

创建一个BufferedReader对象

Reader fr = new FileReader(“位置”);

BufferedReader br = new BufferedReader(fr);

利用BufferedReader类的方法读取文本文件的数据

br.readLine();           读取一行数据,返回字符串,readLine是BufferedReader类特有的方法

关闭相关的流对象
br.close();

fr.close();

8.3.5使用字符流写入文本文件

字符输出流Writer类是向文件写入数据的字符流

常用方法

名称

说明

write(String
str)

将str字符串里包含的字符输出到指定的输出流中

write(String
str,int off,int len)

将str字符串里从off位置开始长度为len的字符输出到流中

void
close()

关闭输出流

void
flush()

刷新输出流

字符输出流FileWriter类是Reader的子类,常用构造方法格式:

FileWriter(String
fileName);

其中,fileName表示与系统相关的文件名

Writer fr
= new FileWriter(“位置”);

使用FileWriter写文本文件

创建一个FileWriter对象

Writer fw = new FileWriter(“位置”);

利用FileWriter类的方法写文本文件

bw.write(“内容”);

相关流对象的清空和刷新

bw.flush();                 刷新该流的缓冲

fw.close();                关闭此流

字符输出流BufferedWriter类是Writer类的子类,它是把一批数据写入到缓冲区,当缓冲区满时再把缓冲区的数据写到字符输出流中,可以避免每次都执行物理写操作。从而提高输入\输入效率。常用构造:

BufferedReader(Writer out);

使用此构造方法创建字符输出流对象如下:

Writer fw = new FileWriter(“位置”);

BufferedWriter bw = new
BufferedWriter(fw);

bw就是创建的默认大小输出缓冲区的缓冲字符输出流

使用BufferedWriter和FileWriter写文本文件

构造一个BufferedWriter对象

FileWriter fw = new FileWriter(“位置”);

BufferedWriter bw = new
BufferedWriter(fw);

利用BufferedWriter类的方法写文本文件

bw.writer(“内容”);

相关流对象的清空和关闭

bw.flush();        刷新该流的缓冲

fw.close();        关闭此流

8.4二进制文件读写

使用字节流类DataInputStream读二进制文件

它是FileInputStream的子类,是FileInputStream类的扩展,利用它读取二进制文件的实现步骤与用FileInputStream类相似,

构造一个数据输入流对象

FileInputStream fis = new
FileInputStream(“位置”);

DataInputStream dis = new
DataInputStream(fis);

利用数据输入流的方法读取二进制文件的数据

dis.read();

关闭数据输入流

dis.close();

使用字节流DataOutputStream写二进制文件

它是FileOutputStream的子类,是FileOutputStream类的扩展,利用它写二进制文件的步骤与FileOutputStream相似

构造一个数据输出流对象

FileOutputStream outFile = new
FileOutputStream(“位置”);

DataOutputStream out = new
DataOutputStream(outFile);

利用数据输出类的方法写二进制文件的数据

out.write(1);             将指定字节数据写入二进制文件

关闭数据输出流

out.close();

JAVAOOP I/O的更多相关文章

  1. JavaOOP 试题

    1) 以下属于OOP的特征有().   a)继承   b)封装   c)多态   d)隐藏   2) JavaOOP中的多态包括()   a) 方法重写 b) 方法重载   c) 方法隐藏 d) 以上 ...

  2. JavaOOP项目 CMS内容管理系统

    数据库里创建一个News表,要有标题.作者.时间.内容等列. 1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入. 2:使用MyEclip ...

  3. JavaOOP QuickHit项目分析

    项目需求:游戏等级6级,随机字符串每级长度不同.每升一级减少比较次数,但是字符串长度相应增加!每级总分数不同,如果游戏中途输入错误则游戏退出!玩家每次在规定时间内输入字符串的同时,打印出游戏难度等级. ...

  4. Javaoop 遇到的问题

    一.java 异常的捕获与处理 (免责声明:本博客里所引用的他人博客链接,只用作我个人的学习,同时非常感谢这些作者!) 1.  https://blog.csdn.net/wei_zhi/articl ...

  5. JavaOOP笔记

    http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371

  6. JAVAOOP多线程

    进程每个独立运行的任务对应一个进程,每个进程可以产生多个线程 特点:1,进程是系统运行程序的基本单位 2,每一个进程都有自己独立的一块内存空间,一组系统资源 3,每一个进程的内部数据和状态都是完全独立 ...

  7. JAVAOOP集合框架

    集合框架三大内容:对外的接口.接口的实现和对集合运算的算法 集合有三大类接口:List.Set.Map 共同点:都是集合接口,都可以用来存储很多对象 不同:Collection接口存储一组不唯一(允许 ...

  8. JAVAOOP异常

    排序: Try-catch-finally:try正常执行,如果有异常执行catch后执行finally,如果没有直接执行finally 执行顺序:try-catch:try中的语句正常执行,如果遇到 ...

  9. JAVAOOP多态

    概念:不同对象对于同一个操作做出的相应不同 实现方法:父类:抽象类 抽象方法 子类:普通类 重写抽象方法 同名 父类:普通类 普通方法 子类:普通类 普通方法 同名 父类:接口 抽象方法 实现类:普通 ...

随机推荐

  1. 【代码笔记】XML深入学习:DTD约束与DTD语法(2)

    DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...

  2. Android仿QQ界面

    最近这几天,一直跟着朋友们聚会什么的,没怎么做项目,今天总算是有时间开电脑继续做我的项目了.下面我就把我做的效果展示一下. 这是模仿了qq的界面效果.因为代码比较长就不粘贴代码了.需要的小伙伴可以跟我 ...

  3. Bootstrap拟态框+支付宝首页

    任务没完成,继续来!因为刚才网不好,我辛辛苦苦打了洋洋洒洒一大堆都没了! 我们今天主要是说一个简单的由Bootstrap和HTML5结合而成的小案例: 首先:由标题可得知,这是移动端,所以需要这样一串 ...

  4. CSS中的各类选择器

    属性选择器 结构性伪类选择器 UI状态伪类选择器 CSS其他选择器

  5. 架构蓝图--软件架构 "4+1" 视图模型

    引言 我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点.通过仔细地观察这 些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图.方框是代表运行的程序吗 ...

  6. Consul在linux系统, 群集实战

    Consul作为微服务的服务注册与发现组件,是非常重要的一部分 目前想用Consul作为配置管理的统一管理 准备两台机器 11.11.11.1011.11.11.20 下载consul linux版  ...

  7. 解决未安装unit测试和jest的Vue项目运行karma start时的错误

    一.起因 在#单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(一)文中,说明了是对已有的Vue项目进行测试框架的搭建,并进行测试.但是此项目在利用 vue-cli ...

  8. laravel5.4学习笔记

    1.安装laravel可以直接用composer安装,然后用laravel new xxx来新建项目 服务器上安装了composer(php包管理工具)以后, composer global requ ...

  9. C++ double 小数精度控制

    第一种方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream&g ...

  10. pymongo 常用操作函数

    pymongo 是 mongodb 的 python Driver Editor. 记录下学习过程中感觉以后会常用多一些部分,以做参考. 1. 连接数据库 要使用pymongo最先应该做的事就是先连上 ...