java之文件
2016-04-01 20:27
567 查看
流(stream)是指一组有顺序的、有起点和终点的字节集合,是对数据传输的总称或抽象。
流的方向:数据由外部输入设备流向内存的过程称为数据输入;由内存流向外部输出设备的过程称为数据输出。因此,从程序所在的内存角度看,流入内存的为输入流,流出内存的为输出流。
流的基本操作:读和写。从流中取得数据的操作称为读;向流中添加数据的操作称为写。输入流只能进行读;输出流只能进行写。
流采用缓冲区技术:对流进行读/写操作,一次只能读/写一个字节,数据传输效率低。为提高效率,将一块内存空间设计成缓冲区。配备缓冲区的流称为缓冲流。
n当向流写入数据时,数据被发送到缓冲区,当缓冲区满时,系统将数据全部发送到相应的设备。如果在此之前要传输数据,可以使用flush()操作;
n当从流读取数据时,系统实际从缓冲区读。当缓冲区空时,系统就从相关设备自动读取数据充满缓冲区。
java.io包中的数据流
★字节流:以字节作为流中元素的基本类型。
★字符流:以字符作为流中元素的基本类型。
InputStream
抽象的字节输入流根类
OuputStream
抽象的字节输出流根类
Reader 抽象的字符输入流根类
Writer 抽象的字符输出流根类
InputStream类的子类
OutputStream类的子类
Java的标准输入/输出
标准输入System.in对象是键盘
标准输出System.out对象是显示器屏幕
标准错误输出System.err对象是显示器屏幕
文件字节流
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
count= fin.read(buffer);
//从文件1中读取的数据放入数组buffer中, count中是返回读出的字节数,当返回-1时文件读完。
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
fout.write(buffer);
//将buffer数组中的数据写入输出流,即写入到文件中。
fout.close();
//关闭输出流
append:默认false
true为添加方式,数据添加在原文件的末尾
false为重写方式,数据从原文件开始处写入,覆盖文件中原有的数据。
读文件时指定文件不存在,抛出异常;
写文件时指定文件不存在,则创建一个新文件写入数据。
数据字节流
数据字节流是在字节流的基础上对数据进行加工!!
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
DataInputStream din=
new DataInputStream(fin);
arrInt = din.readInt();
//从文件1中读取一个int类型数据放入arrInt变量中。
din.close();
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
DataOutputStream dout =
new DataOutputStream(fout);
dout.writeInt(arrInt);
//将int 类型变量arrInt中的数据写入输出流,即写入到文件中。
dout.close();
fout.close();
//关闭输出流
对象字节流
对象流可以直接写入或读取一个对象。对象流分为对象输入流ObjectInputStream和对象输出流ObjectOutputStream。它们必须建立在其他流之上。传输的关键是把有特殊结构的对象进行序列化,然后通过其他流来进行传输。
对象输入流ObjectInputStream:用于恢复那些序列化的对象。
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
ObjectInputStream din= new
ObjectInputStream (fin);
arrInt = (强制类型转换)din.readObject();
//从文件1中读取一个对象数据放入对象变量arrInt中。
din.close();
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
ObjectOutputStreamdout = new
ObjectOutputStream(fout);
dout. writeObject(arrInt);
//将对象arrInt写入输出流,即写入到文件中。
dout.close();
fout.close();
//关闭输出流
由于一个类的对象包含多种信息,为了保证从对象流中能够读取到正确的对象,要求所有写入对象流的对象都必须是序列化的对象。
如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException
文件字符流
文件字符流FileReader和FileWriter类:
用于文件字符的输入输出处理,与文件字节流类FileInputStream、FileOutputStream的功能相似。
FileReader文件字符输入流:
publicFileReader(Filefile)throws
FileNotFoundException
publicFileReader(StringfileName)throws
FileNotFoundException
publicintread()throws
IOException
publicintread(char
cbuf[])throws
IOException
FileWriterfout = new
FileWriter(“文件1”);
//创建文件1的输出流对象
fout.write(“abc");
//向文件字符输出流写入一个字符串
fout.close();//关闭输出流
缓冲字符流
字符缓冲流BufferedReader和BufferedWriter类:
字符缓冲输入流BufferedReader
publicBufferedReader(Reader in)
publicBufferedReader(Reader in,
int sz)//sz缓冲区长度
publicString readLine()throwsIOException
//读取一行字符串,输入流结束时返回null
字符缓冲输出流BufferedWriter类
publicBufferedWriter(Writer out)
publicBufferedWriter(Writer out,
int sz)//sz缓冲区长度
publicvoid newLine()throwsIOException//写入换行符。
FileReader fin = new
FileReader(“文件1”);
BufferedReader bin = new
BufferedReader(fin);
//创建文件1的输出流对象
aline =
bin.readLine();
//读取一行字符串,输入流结束时返回null
bin.close();
fin.close();
字节流与字符流转换
InputStreamReader和OutputStreamWriter类:
InputStreamReader类 字节解码为字符
read()
读取单个字符。
read(char[] cbuf,intoffset,
intlength)
将字符读入数组中的某一部分。
OutputStreamWrite类 字符编码为字节
write(int c) 写入单个字符。
write(String str,
int off,int len) 写入字符串的某一部分
文件操作类
构造方法
Public File(String pathname)
Public File(File parent , Stringname)
Public File(String parent ,String name)
例如:文件对象的创建
Filef1=new File(“myfile.txt”);
Filef2=new File(“\\mydir”,“myfile.txt”);
FilemyDir=newFile(“\\etc”);
Filef3=new File(myDir,“myfile.txt”);
例如:目录文件对象的创建
File myDir=newFile(“\\myjava”);
Filedir=newFile(“.”,“”);
//dir文件对象,表示当前目录。
Filedir=newFile(“../”,“”);
//dir文件对象,表示当前目录上一级目录
FilemyDir=newFile(“”,“”);
//dir文件对象,表示所在盘符根目录
流的方向:数据由外部输入设备流向内存的过程称为数据输入;由内存流向外部输出设备的过程称为数据输出。因此,从程序所在的内存角度看,流入内存的为输入流,流出内存的为输出流。
流的基本操作:读和写。从流中取得数据的操作称为读;向流中添加数据的操作称为写。输入流只能进行读;输出流只能进行写。
流采用缓冲区技术:对流进行读/写操作,一次只能读/写一个字节,数据传输效率低。为提高效率,将一块内存空间设计成缓冲区。配备缓冲区的流称为缓冲流。
n当向流写入数据时,数据被发送到缓冲区,当缓冲区满时,系统将数据全部发送到相应的设备。如果在此之前要传输数据,可以使用flush()操作;
n当从流读取数据时,系统实际从缓冲区读。当缓冲区空时,系统就从相关设备自动读取数据充满缓冲区。
java.io包中的数据流
★字节流:以字节作为流中元素的基本类型。
★字符流:以字符作为流中元素的基本类型。
InputStream
抽象的字节输入流根类
OuputStream
抽象的字节输出流根类
Reader 抽象的字符输入流根类
Writer 抽象的字符输出流根类
InputStream类的子类
OutputStream类的子类
Java的标准输入/输出
标准输入System.in对象是键盘
标准输出System.out对象是显示器屏幕
标准错误输出System.err对象是显示器屏幕
文件字节流
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
count= fin.read(buffer);
//从文件1中读取的数据放入数组buffer中, count中是返回读出的字节数,当返回-1时文件读完。
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
fout.write(buffer);
//将buffer数组中的数据写入输出流,即写入到文件中。
fout.close();
//关闭输出流
append:默认false
true为添加方式,数据添加在原文件的末尾
false为重写方式,数据从原文件开始处写入,覆盖文件中原有的数据。
读文件时指定文件不存在,抛出异常;
写文件时指定文件不存在,则创建一个新文件写入数据。
数据字节流
数据字节流是在字节流的基础上对数据进行加工!!
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
DataInputStream din=
new DataInputStream(fin);
arrInt = din.readInt();
//从文件1中读取一个int类型数据放入arrInt变量中。
din.close();
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
DataOutputStream dout =
new DataOutputStream(fout);
dout.writeInt(arrInt);
//将int 类型变量arrInt中的数据写入输出流,即写入到文件中。
dout.close();
fout.close();
//关闭输出流
对象字节流
对象流可以直接写入或读取一个对象。对象流分为对象输入流ObjectInputStream和对象输出流ObjectOutputStream。它们必须建立在其他流之上。传输的关键是把有特殊结构的对象进行序列化,然后通过其他流来进行传输。
对象输入流ObjectInputStream:用于恢复那些序列化的对象。
FileInputStream fin =
new FileInputStream (“文件1”);
//创建文件1的输入流对象
ObjectInputStream din= new
ObjectInputStream (fin);
arrInt = (强制类型转换)din.readObject();
//从文件1中读取一个对象数据放入对象变量arrInt中。
din.close();
fin.close();
//关闭输入流
FileOutputStream fout= new
FileOutputStream(“文件1”);
//创建文件1的输出流对象
ObjectOutputStreamdout = new
ObjectOutputStream(fout);
dout. writeObject(arrInt);
//将对象arrInt写入输出流,即写入到文件中。
dout.close();
fout.close();
//关闭输出流
由于一个类的对象包含多种信息,为了保证从对象流中能够读取到正确的对象,要求所有写入对象流的对象都必须是序列化的对象。
如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException
文件字符流
文件字符流FileReader和FileWriter类:
用于文件字符的输入输出处理,与文件字节流类FileInputStream、FileOutputStream的功能相似。
FileReader文件字符输入流:
publicFileReader(Filefile)throws
FileNotFoundException
publicFileReader(StringfileName)throws
FileNotFoundException
publicintread()throws
IOException
publicintread(char
cbuf[])throws
IOException
FileWriterfout = new
FileWriter(“文件1”);
//创建文件1的输出流对象
fout.write(“abc");
//向文件字符输出流写入一个字符串
fout.close();//关闭输出流
缓冲字符流
字符缓冲流BufferedReader和BufferedWriter类:
字符缓冲输入流BufferedReader
publicBufferedReader(Reader in)
publicBufferedReader(Reader in,
int sz)//sz缓冲区长度
publicString readLine()throwsIOException
//读取一行字符串,输入流结束时返回null
字符缓冲输出流BufferedWriter类
publicBufferedWriter(Writer out)
publicBufferedWriter(Writer out,
int sz)//sz缓冲区长度
publicvoid newLine()throwsIOException//写入换行符。
FileReader fin = new
FileReader(“文件1”);
BufferedReader bin = new
BufferedReader(fin);
//创建文件1的输出流对象
aline =
bin.readLine();
//读取一行字符串,输入流结束时返回null
bin.close();
fin.close();
字节流与字符流转换
InputStreamReader和OutputStreamWriter类:
InputStreamReader类 字节解码为字符
read()
读取单个字符。
read(char[] cbuf,intoffset,
intlength)
将字符读入数组中的某一部分。
OutputStreamWrite类 字符编码为字节
write(int c) 写入单个字符。
write(String str,
int off,int len) 写入字符串的某一部分
文件操作类
构造方法
Public File(String pathname)
Public File(File parent , Stringname)
Public File(String parent ,String name)
例如:文件对象的创建
Filef1=new File(“myfile.txt”);
Filef2=new File(“\\mydir”,“myfile.txt”);
FilemyDir=newFile(“\\etc”);
Filef3=new File(myDir,“myfile.txt”);
例如:目录文件对象的创建
File myDir=newFile(“\\myjava”);
Filedir=newFile(“.”,“”);
//dir文件对象,表示当前目录。
Filedir=newFile(“../”,“”);
//dir文件对象,表示当前目录上一级目录
FilemyDir=newFile(“”,“”);
//dir文件对象,表示所在盘符根目录
相关文章推荐
- C#将图片和字节流互相转换并显示到页面上
- Node.js中的流(Stream)介绍
- 用NODE.JS中的流编写工具是要注意的事项
- PHP Streams(流)详细介绍及使用
- 深入解析Java编程中面向字节流的一些应用
- 简单总结Java IO中stream流的使用方法
- 举例讲解Java中的Stream流概念
- Java IO
- 【学习日记】有关java的IO的知识点总结
- 替换空格(面试题4)
- IO应用
- Java流操作有关的类或接口
- 字节流与字符流
- 黑马程序员--------java IO流 Reader、Writer、InputStream、OutputStream
- 黑马程序员_IO流
- 黑马程序员--IO流(1)
- 黑马程序员--IO流(2)
- JavaSE 学习参考:字节流和字符流转换
- JavaSE 学习参考:IO流之字节流
- 回归基础系列-快速排序[JAVA]