黑马程序员技术交流社区
标题: 【石家庄校区】 IO流。Skr [打印本页]
作者: 陈叶_cy 时间: 2018-8-7 10:53
标题: 【石家庄校区】 IO流。Skr
本帖最后由 小石姐姐 于 2018-8-9 11:34 编辑
java.io.OutputStream 字节输出流:
字节输出流的基本共性功能方法:
[Java] 纯文本查看 复制代码
Public void close():关闭此输出流并释放与此流相关联的任何系统资源(当完成流的操作时,必须调用此方法,释放系统资源)
Public void flush():刷新此输出流并强制任何缓冲的输出字节被写出
Public void write(byte[] b):将b.length字节从制定的字节数组写入此输出流
Pulic void write(byte[] b,int off,int len):从制定的字节数组写入len字节,从偏移量off开始输出到此输出流,off是开始的索引,len是写的字节数
Public abstract void write(int b):将制定的字节输出流
Java.io.FileOutptStream 文件字节输出流:
构造方法:
[Java] 纯文本查看 复制代码
FieOutputSteam(String name):创建一个向具有制定名称的文件中写入数据的输出文件流(String name)目的地是一个文件的路径
FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流(File file)目的地是一个文件
字节输出流的使用步骤(重点):
1、创建FileOutputStream对象,构造方法中传递写入数据的目的地
2、调用FileOutputStream对象中的方法write,把数据写入到文件中
3、释放资源
在文件中追加/续写:
使用两个参数的构造方法
[Java] 纯文本查看 复制代码
FileOutputStream(String name,booleam append):创建一个向具有自定name的文件中写入数据的输出文件流
FileOutputStream(File file,boolean append):创建一个向指定File对象表示的文件中写入数据的文件输出流 boolean append:追加写开关 true:创建对象不会覆盖原文件,继续在文件的末尾追加写数据 false:创建一个新文件,覆盖原文件
Java.io.InputSream:字节输入流
定义了所有子类的共性方法:
[Java] 纯文本查看 复制代码
Int read():从输入流中读取数据的下一个字节,读取文件中的一个字节并返回,读取到文件的末尾返回-1
例:获取文件中的单个字符
[Java] 纯文本查看 复制代码
int len = 0;
FileInputStream fis = new FileInputStream("day09\\b.txt");
while ((len = fis.read()) != -1){
System.out.print((char) len);
}
Int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,数组的长度一般定义为1024(1KB)或者1024的整数倍,int是每次读取的有效字节个数
FileInputStream fis = new FileInputStream("day09\\b.txt");
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes))!= -1){
System.out.println(new String(bytes,0,len));
}
Void close():关闭此输入流并释放与该留关联的所有系统资源
Java.io.FileInputStream
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
[Java] 纯文本查看 复制代码
FileInputStream(String name):name,文件的路径
FileInputStream(File file):file,文件
补充String类的构造方法:
[Java] 纯文本查看 复制代码
String(byte[] bytes):把字节数组换换为字符串
String(byte[] bytes,int offset,int length):把字节数组的一部分转换为字符串offset:数组的开始索引 length:转换的字节个数
字节输入流的使用步骤(重点):
1、创建FileInputStream对象,构造方法中绑定要读取的数据源
2、使用FileInputStream对象中的方法read,读取文件
3、释放资源
字符流:不管是中文还是英文都可以读取
Reader输入流(FileReader)
Java.io.Reader
方法:
[Java] 纯文本查看 复制代码
Public void close():关闭此流并释放与此流相关联的任何系统资源
Public int read():从输入流读取一个字符
Public int read(char[] cbuf):从输入流中读取一些字符,并将他们存储到字符数组cbuf中
Writer字符输出流
java.io.Writer 主要的是FileWriter
共性方法
[Java] 纯文本查看 复制代码
Void write(int c):写入单个字符
Void write(char[] cbuf)写入字符数组
Abstract void write(char[] cbuf,int off,int len):写入字符数组的某一部分,off数组的开始索引,len写的字符个数
Void write(String str):写入字符串
Void write(String str,int off,int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
Void flush():刷新该流的缓冲
Void close():关闭此流,但要先刷新它
FileWriter类
字符输出流的使用步骤(重点)
1、创建FileWriter对象,构造方法中绑定要写入数据的目的地
2、使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)
3、使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
4、释放资源(会把内存缓冲区中的数据刷新到文件中)
Flush方法和close方法的区别
-flush:刷新缓冲区,流对象可以继续使用
-close:先刷新缓冲区,然后通知系统释放资源,流对象不可以再被使用了
续写和换行
续写,追加写:使用两个参数的构造方法
[Java] 纯文本查看 复制代码
FileWriter(String fileName,boolean append):
FileWriter(File file,boolean append)
String fileName,File file:写入数据的目的地
Boolean append:续写开关true:不会创建新的文件覆盖原文件,可以续写;false:创建新的文件覆盖原文件
构造方法作用:
1、创建FileWriter对象
2、根据构造方法中的路径,在磁盘行创建文件(如果文件已存在,则清空文件内容)
3、将FileWriter对象指向磁盘上的文件
Properties类
表示了一个持久的属性集,Properties可保存在流中或从流中加载
Preoperties集合是一个唯一和IO流相结合的集合
可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
[Java] 纯文本查看 复制代码
Void store(OutputStream out,String comments)
Void store(Writer wiriter,String coments)
参数:
OutputStream out:字节输出流,不能写入中文
Writer writer:字符输出流,可以写中文
String comments:注释,用来解释说明保存的文件是做什么用的
不能使用中文,会产生乱码,默认是Unicode编码
一般使用””空字符串
使用步骤:
1、创建Properties集合对象,添加数据
2、创建字节输出流/字符输出流对象,构造方法中绑定要输出的目的地
3、使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
4、释放资源
可以使用Properties集合中的方法Load,把硬盘中保存的文件(键值对),读取到集合中使用
可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用
[Java] 纯文本查看 复制代码
Void load(InputStream inStream)
Void load(Reader reader)
参数:
InputStream inStream:字节输入流,不能读取含有中文的键值对
Reader reader:字符输入流,能读取含有中文的键值对
使用步骤:
1、创建Properties集合对象
2、使用Preperties集合对象中的方法Load读取保存键值对的文件
3、遍历Properties集合
注意事项:
1、存储键值对的文件中,键与值默认的连续符号可以使用=,空格(其他符号)
2、存储键值对的文件中,可以使用#进行注释,被注视的键值对不会再被读取
3、存储键值对的文件中,键与值默认都是字符串,不能再加引号
属性列表中每个键及其对应值都是一个字符串
Properties集合是一个双列集合,Key和value默认都是字符串
使用Properties集合存储数据,遍历取出Properties集合中的数据
Properties集合是一个双列集合,key和value默认都是字符串
Properties集合有一些操作字符串的特有方法
[Java] 纯文本查看 复制代码
Object setProperty(String key,String value)调用Hashtable的方法put
String getProperty(String key)通过key找到value值,此方法相当于Map集合中的get(key)方法
Set<String> stringPropertyNames()返回此属性列表中的键集,其中该键及其对应值都是字符串
IO异常:
IO流的标准格式:
[Java] 纯文本查看 复制代码
FileWriter fw = null;
try {
//IO流对象的创建, 操作等代码
fw = new FileWriter("d:\\09_IOAndProperties\\g.txt", true);
for (int i = 0; i <10 ; i++) {
fw.write("HelloWorld"+i+"\r\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 释放资源
if(fw != null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |