java之文件

流(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 类:

         用于文件字符的输入输出处理,与文件字节流类FileInputStreamFileOutputStream的功能相似。

FileReader文件字符输入流:

public FileReader (Filefile) throws FileNotFoundException
public FileReader (String fileName ) throws FileNotFoundException
public int read() throws IOException
public int read(char cbuf []) throws IOException

FileWriter fout = new FileWriter(“文件1”);

//创建文件1的输出流对象

fout.write(“abc");

//向文件字符输出流写入一个字符串

fout.close ();// 关闭输出流

缓冲字符流
字符缓冲流 BufferedReader BufferedWriter 类:
字符缓冲输入流 BufferedReader
public BufferedReader (Reader   in)
public BufferedReader (Reader   in, int   sz ) // sz 缓冲区长度
publicString readLine () throws IOException

        //读取一行字符串,输入流结束时返回null

字符缓冲输出流 BufferedWriter
public BufferedWriter (Writer   out)
public BufferedWriter (Writer   out, int   sz ) // sz 缓冲区长度
publicvoid newLine () throws IOException // 写入换行符。

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文件对象,表示所在盘符根目录






1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值