JAVAOOP I/O
程序的主要任务就是操作数据,通过允许程序读取文件的内容或向文件写入数据,可以使程序应用更加广泛。
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字符串里包含的字符输出到指定的输出流中 |
write(String |
将str字符串里从off位置开始长度为len的字符输出到流中 |
void |
关闭输出流 |
void |
刷新输出流 |
字符输出流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的更多相关文章
- JavaOOP 试题
1) 以下属于OOP的特征有(). a)继承 b)封装 c)多态 d)隐藏 2) JavaOOP中的多态包括() a) 方法重写 b) 方法重载 c) 方法隐藏 d) 以上 ...
- JavaOOP项目 CMS内容管理系统
数据库里创建一个News表,要有标题.作者.时间.内容等列. 1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入. 2:使用MyEclip ...
- JavaOOP QuickHit项目分析
项目需求:游戏等级6级,随机字符串每级长度不同.每升一级减少比较次数,但是字符串长度相应增加!每级总分数不同,如果游戏中途输入错误则游戏退出!玩家每次在规定时间内输入字符串的同时,打印出游戏难度等级. ...
- Javaoop 遇到的问题
一.java 异常的捕获与处理 (免责声明:本博客里所引用的他人博客链接,只用作我个人的学习,同时非常感谢这些作者!) 1. https://blog.csdn.net/wei_zhi/articl ...
- JavaOOP笔记
http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371
- JAVAOOP多线程
进程每个独立运行的任务对应一个进程,每个进程可以产生多个线程 特点:1,进程是系统运行程序的基本单位 2,每一个进程都有自己独立的一块内存空间,一组系统资源 3,每一个进程的内部数据和状态都是完全独立 ...
- JAVAOOP集合框架
集合框架三大内容:对外的接口.接口的实现和对集合运算的算法 集合有三大类接口:List.Set.Map 共同点:都是集合接口,都可以用来存储很多对象 不同:Collection接口存储一组不唯一(允许 ...
- JAVAOOP异常
排序: Try-catch-finally:try正常执行,如果有异常执行catch后执行finally,如果没有直接执行finally 执行顺序:try-catch:try中的语句正常执行,如果遇到 ...
- JAVAOOP多态
概念:不同对象对于同一个操作做出的相应不同 实现方法:父类:抽象类 抽象方法 子类:普通类 重写抽象方法 同名 父类:普通类 普通方法 子类:普通类 普通方法 同名 父类:接口 抽象方法 实现类:普通 ...
随机推荐
- 【代码笔记】XML深入学习:DTD约束与DTD语法(2)
DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...
- Android仿QQ界面
最近这几天,一直跟着朋友们聚会什么的,没怎么做项目,今天总算是有时间开电脑继续做我的项目了.下面我就把我做的效果展示一下. 这是模仿了qq的界面效果.因为代码比较长就不粘贴代码了.需要的小伙伴可以跟我 ...
- Bootstrap拟态框+支付宝首页
任务没完成,继续来!因为刚才网不好,我辛辛苦苦打了洋洋洒洒一大堆都没了! 我们今天主要是说一个简单的由Bootstrap和HTML5结合而成的小案例: 首先:由标题可得知,这是移动端,所以需要这样一串 ...
- CSS中的各类选择器
属性选择器 结构性伪类选择器 UI状态伪类选择器 CSS其他选择器
- 架构蓝图--软件架构 "4+1" 视图模型
引言 我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点.通过仔细地观察这 些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图.方框是代表运行的程序吗 ...
- Consul在linux系统, 群集实战
Consul作为微服务的服务注册与发现组件,是非常重要的一部分 目前想用Consul作为配置管理的统一管理 准备两台机器 11.11.11.1011.11.11.20 下载consul linux版 ...
- 解决未安装unit测试和jest的Vue项目运行karma start时的错误
一.起因 在#单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(一)文中,说明了是对已有的Vue项目进行测试框架的搭建,并进行测试.但是此项目在利用 vue-cli ...
- laravel5.4学习笔记
1.安装laravel可以直接用composer安装,然后用laravel new xxx来新建项目 服务器上安装了composer(php包管理工具)以后, composer global requ ...
- C++ double 小数精度控制
第一种方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream&g ...
- pymongo 常用操作函数
pymongo 是 mongodb 的 python Driver Editor. 记录下学习过程中感觉以后会常用多一些部分,以做参考. 1. 连接数据库 要使用pymongo最先应该做的事就是先连上 ...