javaoop——第十课笔记(第八章)

转载 2018年04月16日 10:53:57
一、使用File类操作文件
1、什么是文件?
文件可认为是相关记录放在一起的数据的集合。
2、文件一般储存在哪里?
储存在磁盘、光驱、移动硬盘等。
3、java程序如何访问文件属性?
Java API :java.io.File 类

使用.File 类,访问文件的属性

注意:
A:一个“\”代表根目录,因为“\”有特殊意义,所以前面需要再加上一个“\”,代表转义字符。
B:将需要操作的文件路径传给该对象,对象就可以通过一系列方法,对这个文件进行操作了。

二、File 类常用方法

注意:
A:相对路径名——相对于当前代码的路径。
B:绝对路径名——表示完整路径
C:目录指的就是文件夹

二、字节流与字符流概述
1、字符流的由来
因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。

2、字节流和字符流的区别
A:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
B:处理对象不同
字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

3、结论
只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。


第三节:字节流读写文件
1、InputStream/OutputStream,都是抽象的读/写数据方式
2、EOF=End 读到结尾时是-1

3、FileInputStream(输入流的基本方法)
概述:该流用于从文件读取数据,可以使用字符串类型的文件名创建一个输入流对象来读取文件
A:代码:InputStream is = new FileInputStream("res/data.xml");
B:创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。
C:读取的方式
//创建文件读入对象,传一个文件对象进去
//InputStream是一个抽象类
InputStream is = new FileInputStream(file);
// //调用读的方法,返回的是一个字节,再转换成字符
// System.out.println((char)is.read());
int leng = is.read();
//如果字节读取完,则返回-1
while (leng != -1) {
System.out.println((char)leng);
leng = is.read();//再读取下一个字节

4、FileOutputStream(输出流基本方法
A、概述:该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
B、代码:OutputStream os = new FileOutputStream("res/data.xml",true)
////第一个参数是文件对象,第二个参数是是追加还是覆盖,传入布尔值,“真”是追加
C、创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。
//第一个参数是字节数组,第二个参数是数组的下标,第三个参数是长度
os.write(arr, 0, arr.length);

5、缓冲流
BufferedInputStream(InputStream in)和BufferedOutputStream(OutputStream out)
6、二进制文件的读写
DataInputStream(InputStream in)和DataOutputStream(OutputStream out)
常用方法:writeInt()/writeDouble()/writeUTF()/read()/readUTF()/readChar等等
作用:可以读写图片、音乐、视频等。
——
——
第四章:字符流读取文本文件
1、输入流
new FileReader(File filename):创建字符输入流对象
new FileReader(String filename):创建字符输入流对象
read():读取下一个字符
方法1:
//创建一个字符输入流对象
Reader r = new FileReader("D:/a.txt");
//创建一个字符串对象
StringBuffer sb =new StringBuffer();
char[] ch = new char[4];
//没必要用循环
int leng = r.read(ch);
while (leng != -1) {
//使用字符串添加方法
sb.append(ch);
leng = r.read();
}
System.out.println(sb);
方法2:
//创建一个字符输入流对象
Reader r = new FileReader("D:/a.txt");
//定义一个字符数组
char[] ch = new char[4];
System.out.println(r.read(ch));//返回的是真实的字符个数
//传一个字符类型的数组,在读取文件里信息后,会将字符存入该数组中。
//相当于,发生了一个引用传递,改变了传过去的数组
r.read(ch);
for (char c : ch) {
System.out.println(c);
}

2、输出流
FileWriter (File filename),FileWriter (String filename):创建输出对象
FileWriter (File filename,boolean append):是追加还是覆盖
字符输入流和输出流的read和write· 作用:提升效率方法使用字符数组读写数据,即以字符为基本单位处理数据
代码:
Writer w = new FileWriter("D:/a.txt");
w.write("中华人民共和国感谢法");
w.flush();//刷新缓存的方法

3、缓冲流
BufferedReader(Reader in)和BufferedWriter (Writer out)
BufferedReader--->readLine()一次读一行
BufferedWriter--->newLine()插入换行符
输入流代码:
Reader r = new FileReader("D:/a.txt");
BufferedReader br = new BufferedReader(r);
String l = br.readLine();
while (l != null) {
System.out.println(l);
l = br.readLine();
}

4、总结
1、后产生的流,要先关。
2、关闭放在finally块中

《C++ primer》第五版 第八章 笔记

iostream:定义了用于读写流的基本类型 fstream:定义了读写命名文件的类型 sstream:定义了读写内存string对象的类型 因为不能拷贝IO对象,所以我们不能将形参或者返回类型...
  • weiliangdemo
  • weiliangdemo
  • 2015年06月10日 22:04
  • 213

《JAVA编程思想》读书笔记1——OOP思想

面向对象思想JAVA是一种面向对象编程语言,它基于Smalltalk语言,作为OOP语言,它具有以下五个基本特性 万物皆对象,每一个对象都会存储数据,并且可以对自身执行操作。因此,每一个对象包含两部分...
  • yu616568
  • yu616568
  • 2016年05月03日 22:34
  • 1407

【c++ primer 笔记】第八章 IO库

1. 不能拷贝或对IO对象赋值 进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能个是const的。 条件状态 badbit 系统级错误,如不...
  • LSbiubiubiu
  • LSbiubiubiu
  • 2016年08月26日 19:03
  • 320

C++ Primer 第二遍阅读笔记(第八章)

IO 类型在三个独立的头文件中定义:iostream 定义读写控制窗口的类型,fstream 定义读写已命名文件的类型,而 sstream 所定义的类型则用于读写存储在内存中的 string 对象。在...
  • China_jp
  • China_jp
  • 2013年02月15日 22:21
  • 478

Java OOP 随心笔记

 我认为一个软件开发初学者在Java编程语言中最难以学习的就是面向对象的概念,尤其以面向父类,面向接口编程尤为困难。作为学术研究人员,我翻阅了很多Java书籍,试图来找寻解决上述问题的方法。但是目前市...
  • frank_softworks
  • frank_softworks
  • 2007年07月11日 10:53
  • 8115

《Linux4.0设备驱动开发详解》笔记--第八章:linux设备驱动的阻塞与非阻塞

8.1 阻塞与非阻塞I/O 阻塞操作 : 是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作。被挂起的进程进入休眠, 被从调度器移走,直到条件满足。 非阻塞操作:在不能进行设...
  • z1106609486
  • z1106609486
  • 2016年05月19日 16:53
  • 409

《Linux4.0设备驱动开发详解》笔记--第九章:Linux设备驱动中的异步通知与同步I/O

在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问。因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞...
  • zjy900507
  • zjy900507
  • 2018年03月21日 13:43
  • 78

机器学习(周志华)_第八章 集成学习

第八章的知识点
  • liuyan20062010
  • liuyan20062010
  • 2017年05月12日 13:54
  • 497

机器学习(周志华) 参考答案 第八章 集成学习 8.5

机器学习(周志华) 参考答案 第八章 集成学习 8.5机器学习(周志华西瓜书) 参考答案 总目录 http://blog.csdn.net/icefire_tyh/article/details/52...
  • icefire_tyh
  • icefire_tyh
  • 2016年08月12日 19:26
  • 1377

C++ Primer Plus第六版-第八章学习笔记

本章学习C++不同于C的函数新特性,这是进入C++领域的重要一章,其内容包括:内联函数、按引用传递变量、默认的参数值、函数重载(多态)、模板函数等; 1、内联函数; C++中要使用函数必须提供定义...
  • sbcypress
  • sbcypress
  • 2016年01月04日 10:07
  • 286
收藏助手
不良信息举报
您举报文章:javaoop——第十课笔记(第八章)
举报原因:
原因补充:

(最多只允许输入30个字)