版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA核心逻辑
第十三章:文件与I/O流
目录File类的使用I/O分类
字节流
字符流
对象序列化文件
什么是文件文件可认为是相关记录或放在一起的数据的集合
文件存储位置JAVA程序如何访问文件属性JAVAAPI:java.io.File类File类java.io.File类代表硬盘上的一个文件或者文件夹java中文件路径的表示方式Windows中表示c:\suns.txtJava中表示c:\\suns.txtc:/sun.txtFile类File类的构造方法File类没有无参构造方法File(Stringpathname)File(Stringparent,Stringchild)File(Fileparent,Stringchild)File类File类的常用方法createNewFile()mkdir()/mkdirs()delete()deleteOnExit()exists()isFile()isDirectory()方法名称说明booleanexists()判断文件或目录是否存在booleanisFile()判断是否是文件booleanisDirectory()判断是否是目录StringgetPath()返回此对象表示的文件的相对路径名StringgetAbsolutePath()返回此对象表示的文件的绝对路径名StringgetName()返回此对象表示的文件或目录的名称booleandelete()删除此对象指定的文件或目录booleancreateNewFile()创建名称的空文件,不创建文件夹longlength()返回文件的长度,单位为字节,如果文件不存在,则返回0L文件练习需求说明实现查看文件属性、创建和删除文件文件属性包括:文件的绝对路径、文件名称、文件字节数I/OI/O概念通过流来读写文件流是指一连串流动的字符,是以先进先出方式发送信息的通道InputStreamOutputStream来自数据源的数据流流向目的地的数据流AECDBFI/O输入/输出流与数据源I/OI/O流的分类输入流输出流字节流字符流节点流过滤流字节流是8位通用字节流,字符流是
16
位
Unicode
字符流输入输出流是相对于计算机内存来说的字节流
字节流的概念传输的数据单位是字节,也意味着字节流能够处理任何一种文件
字节流的组成InputStreamOutputStreamFileInputStream字节输入流InputStream类常用方法intread()intread(byte[]b)intread(byte[]b,intoff,intlen)voidclose()intavailable()子类FileInputStream常用的构造方法
FileInputStream(Filefile)FileInputStream(Stringname)FileInputStream字节输入流使用FileInputStream
读文本文件引入相关的类构造文件输入流FileInputStream对象读取文本文件的数据关闭文件流对象importjava.io.IOException;importjava.io.FileInputStream;FileInputStreamfis=newFileInputStream(“c:\\test.txt");fis.available();fis.read();fis.close();FileInputStream字节输入流intread()FileInputStream字节输入流intread(byte[]bs)OutputStreamStream字节输出流OutputStream类常用方法voidwrite(intc)voidwrite(byte[]buf)voidwrite(byte[]b,intoff,intlen)voidclose()子类FileOutputStream常用的构造方法FileOutputStream(Filefile)FileOutputStream(Stringname) FileOutputStream(Stringname,booleanappend)1、前两种构造方法在向文件写数据时将覆盖文件中原有的内容2、创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件FileOutputStream字节输入流使用FileOutputStream
写文本文件引入相关的类构造文件输出流FileOutputStream对象关闭文件流对象importjava.io.IOException;importjava.io.FileOutputStream;("c:\\test.txt");Stringstr="好好学习Java";byte[]words=str.getBytes();fos.write(words,0,words.length);
fos.close();FileOutputStreamFileOutputStreamfos=new把数据写入文本文件输出流FileOutputStream17/44FileOutputStream字节输出流
FileOutputStream(Stringpath)FileOutputStream字节输出流FileOutputStream(Stringpath,booleanappend)FileOutputStream(Filefile,booleanappend)读写文件练习需求说明文件“我的青春谁做主.txt”位于D盘根目录下,要求将此文件的内容复制到C:\myFile\myPrime.txt中实现思路1.创建文件“D:\我的青春谁做主.txt”并自行输入内容2.创建C:\myFile的目录。3.创建输入流FileInputStream对象,负责对D:\我的青春谁做主.txt文件的读取。4.创建输出流FileOutputStream对象,负责将文件内容写入到C:\myFile\myPrime.txt中。5.创建中转站数组words,存放每次读取的内容。6.通过循环实现文件读写。7.关闭输入流、输出流过滤流过滤流过滤流并没有改变实际的读写行为,只是扩展了进一步处理数据的功能,其构造必须使用一个已经存在的输入流/输出流,并用它进行实际的读写。DataStreamDataInputStreamDataOutputStreamBufferedStreamBufferedInputStreamBufferedOutputStream过滤流DataInputStreamFileInputStream的子类与FileInputStream类结合使用读取按照与平台无关的方式从流中读取基本类型(int、char和long等)的数据readXxx();DataOutputStreamFileOutputStream的子类与FileOutputStream类结合使用向流中写基本类型的数据writeXxx();过滤流DataInputStream读取数据的步骤引入相关的类构造数据输入流对象调用read()方法读取二进制数据关闭数据输入流importjava.io.FileInputStream;importjava.io.DataInputStream;FileInputStreamfis=newFileInputStream("C:\\HelloWorld.class");DataInputStreamdis=newDataInputStream(fis);dis.read();dis.close();与字节流FileInputStream类实现文本文件读取步骤极其相似过滤流DataInputStream读取数据过滤流DataOutputStream写数据的步骤引入相关的类构造数据输出流对象调用write()方法写二进制文件的数据关闭数据输出流importjava.io.FileOutputStream;importjava.io.DataOutputStream;FileOutputStreamoutFile=newFileOutputStream("C:\\temp.class");DataOutputStreamout=newDataOutputStream(outFile);out.write(1);out.close();与字节流FileOutputStream类实现文本文件读取步骤极其相似过滤流DataOutputStream读取数据过滤流BufferedStream利用缓冲区来提高读写效率BufferedInputStream先将一批数据读入到缓冲区,使用read()方法只需要从缓冲区获取数据,减少物理读取数据的次数BufferedOutputStream先将数据写到缓冲区,默认情况下,只有缓冲区满时才会把缓冲区的数据真正写到数据汇调用flush(),立即将缓冲区数据写到输出流中过滤流BufferedStreamBufferedInputStreamBufferedOutputStreamBufferedStream练习
需求说明图片top.bmp位于C盘根目录下,要求将此图片复制到D:\myDoc\myPicture.bmp过滤流对象的序列化与反序列化对象的序列化是把对象写到一个输出流中,对象的反序列化是从一个输入流中读取一个对象实现java.io.Serializable接口的类ObjectStreamObjectInputStreamObjectOutputStreamObjectStreamwriteObject()readObject()过滤流java.io.Serializable接口过滤流ObjectOutputStream写入对象过滤流ObjectInputStream读取对象过滤流transient关键字不参与序列化及反序列化过程
序列化时注意事项不要使用追加的方式写对象如果一个对象的属性又是一个对象,则要求这个属性对象也实现了Serializable接口字符流
字符编码Java语言采用Unicode字符编码
常见的编码规范(字符集)ASCIIISO-8859-1GBKUTF-8
乱码问题字符流字符编码的转换字符流
字符流的组成ReaderWriter字符流FileReaderFileReader(StringfileName)close()intread(char[]cbuf)
FileWriterFileWriter(StringfileName)close()write(Stringvalue)字符流InputStreamReader和OutputStreamWriter分别是Reader和Writer的子类特点:可以把一个字节流转换成一个字符流
在转换时可以执行编码方式字符流InputStreamReaderInputStreamReader(InputStreamis)InputStreamReader(InputStream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年考研生物分子生物学专项训练题库
- 2025-2026年浙江省人教版高中历史必修第一册单元测试卷
- 2025-2026年九年级信息技术上册第6单元网络知识测试卷
- 2025-2026年广东省部编版高中政治必修第三册同步练习题
- 2025-2026年苏教版高中英语完形填空专项练习题
- 2025-2026年四川省人教版初中物理第1单元力学基本概念同步练习题
- 2026年四川省人教版初中数学上册第4章同步练习题
- 2026年浙江省部编版初中物理下册第12章知识点巩固习题
- 2025-2026年江苏省苏教版小学语文四年级上册第7单元同步练习题
- 2026年江苏省北师大版高中物理高二年级上册电磁学习题集
- 2026年中国电信校园招聘考试笔试试题及答案
- (2026)事业单位招聘考试《公共基础知识》真题库参考答案
- 2026秋人教版(新教材)小学数学五年级上册(全册)教学设计(附目录p273)
- 苏州工业园区娄葑街道2026年社工招聘考试【结构化面试题库+高分答题模板】(含考官评分要点)
- 2026人教版五年级上语文课后生字情境默写小纸条
- 高三英语第一轮复习教学计划
- 2026嘉兴市市级机关事业单位编外招聘24人笔试参考试题及答案详解
- 2026年河大版(新教材)初中信息技术七年级全一册《常见的互联网应用》教学课件
- 情态补语得专题教育课件
- 卫生专业技术人员职称制度改革介绍
- GB/T 19810-2005聚乙烯(PE)管材和管件热熔对接接头拉伸强度和破坏形式的测定
评论
0/150
提交评论