Java IO操作部分.docx

上传人:b****2 文档编号:16985339 上传时间:2023-07-21 格式:DOCX 页数:46 大小:27.96KB
下载 相关 举报
Java IO操作部分.docx_第1页
第1页 / 共46页
Java IO操作部分.docx_第2页
第2页 / 共46页
Java IO操作部分.docx_第3页
第3页 / 共46页
Java IO操作部分.docx_第4页
第4页 / 共46页
Java IO操作部分.docx_第5页
第5页 / 共46页
Java IO操作部分.docx_第6页
第6页 / 共46页
Java IO操作部分.docx_第7页
第7页 / 共46页
Java IO操作部分.docx_第8页
第8页 / 共46页
Java IO操作部分.docx_第9页
第9页 / 共46页
Java IO操作部分.docx_第10页
第10页 / 共46页
Java IO操作部分.docx_第11页
第11页 / 共46页
Java IO操作部分.docx_第12页
第12页 / 共46页
Java IO操作部分.docx_第13页
第13页 / 共46页
Java IO操作部分.docx_第14页
第14页 / 共46页
Java IO操作部分.docx_第15页
第15页 / 共46页
Java IO操作部分.docx_第16页
第16页 / 共46页
Java IO操作部分.docx_第17页
第17页 / 共46页
Java IO操作部分.docx_第18页
第18页 / 共46页
Java IO操作部分.docx_第19页
第19页 / 共46页
Java IO操作部分.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java IO操作部分.docx

《Java IO操作部分.docx》由会员分享,可在线阅读,更多相关《Java IO操作部分.docx(46页珍藏版)》请在冰点文库上搜索。

Java IO操作部分.docx

JavaIO操作部分

JavaIO操作部分

*知识点

|--java基础部分由四个部分是必须掌握的:

1、面向对象,包括各个概念及使用

2、java类集

3、javaIO(如果是自学的人员,面对IO庞大的开发包基本上是比较郁闷的)

4、JDBC

5、IO文件操作的常用类:

File、RandomAccessFile、OutputStream、InputStream

Writer、Reader、OutputStreamWriter、InputStreamReader、

ByteArrayOutputStream、ByteArrayInputStream、PipedOutputStream、PipedInputStream、PrintStream、PrintWriter.

具体内容:

1、javaIO的主要分类

在javaIO实际上很好的体现了java的面向对象的设计思想

一个接口或抽象类的具体行为由子类决定,那么根据实际化子类的不同完成的功能也不同

JavaIO中的所有的操作类都放在javaIO包中

主要的类和接口是:

File、InputStream、OutputStream、Reader、Writer类和Seriazable接口

(一)File类

File类在整个java.io包中是一个独立的类,此类的主要功能是完成与平台无关文件操作,例如:

创建文件、删除文件等。

在File类中提供了一下的构造方法:

publicFile(Stringpathname)

·使用的时候需要依靠其指定一个文件的具体路径

掌握File类以下的操作:

1创建文件

2删除文件

3创建目录

4删除文件之前判断文件是否存在

5判断路径是文件还是文件夹

6列出目录中的内容

·创建文件

例如,现在要在D盘上创建一个地demo.txt的文件。

创建文件的方法:

publicbooleancreateNewFile()throwsIOException

importjava.io.*;

publicclassTing02{

publicstaticvoidmain(Stringargs[])throwsException{

Filefile=newFile("d:

\\Ting0001.text");

try

{

file.createNewFile();

}

catch(Exceptione)

{

System.out.println(e);

}

}

}

以上程序本身是作为一个文件的创建出现,而如果要使用具体的内容的输出,则必须依靠IO操作流。

·删除文件

如果要想删除文件则使用:

publicbooleandelete()

importjava.io.*;

publicclassTing02{

publicstaticvoidmain(Stringargs[])throwsException{

Filefile=newFile("d:

\\Ting0001.txt");

file.delete();

}

}

以上的操作确实完成了文件的创建和删除,可是代码却同样存在问题。

在各个操作系统中,文件的分隔符是不一样的:

·windows:

\

·linux:

/

Java本身属于跨平台的语言,那么应该可以适应各个不同的平台要求,那么为了解决可以自动适应不同系统的分隔符要求,所以在file类中提供了一下几个常量:

·路径的分隔符:

publicstaticfinalStringpathSeparator,相当于系统“;”

·分隔符:

publicstaticfinalStringseparator相当于系统“\”或者“/”

所以,对于实际的开发来讲,必须使用这样的常量进行声明。

正经的java常量字母应该全部大写,但是此处并没有大写,这就是java历史发展原因。

所以,以后程序都将采用File.separator进行分割。

·删除文件之前判断文件是否存在

提供了以下的方法:

publicbooleanexists();

importjava.io.*;

publicclassTing03

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"demo.txt");

if(file.exists())

{

System.out.println("文件存在");

}else{

System.out.println("文件不存在");

}

}

}

了解了以上特点之后完成以下的一个要求:

·要求编写一个程序,此程序的主要功能如下,如果文件存在,则删除,如果文件不存在则创建一个新的文件。

importjava.io.*;

publicclassTing01{

publicstaticvoidmain(Stringargs[])throwsException{

Filefile=newFile("d:

\\demo.txt");

if(file.exists())

{

file.delete();

}else{

try

{

file.createNewFile();

}

catch(Exceptione)

{

System.out.println(e);

}

}

}

}

程序此时确实可以完成功能,但是在操作的时间会存在延迟。

·判断路径是文件还是文件夹

在程序中可以使用如下的方法进行判断

·判断是否是文件夹:

publicbooleanisDirectory()

·判断是否是文件:

publicbooleanisFile()

importjava.io.*;

publicclassTing04

{

publicstaticvoidmain(Stringargs[]){

Filefile1=newFile("d:

"+File.separator+"demo.txt");

Filefile2=newFile("d:

"+File.separator+"ProgramFiles");

System.out.println(file1.isFile());

System.out.println(file2.isDirectory());

}

}

·列出目录中的内容

在File类中提供了一下的两个方法进行目录的列表操作:

·publicString[]list()

·publicFile[]listFiles()

importjava.io.*;

publicclassTing05

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"MLDNWEB");

Stringpath[]=file.list();

for(inti=0;i

{

System.out.println(path[i]);

}

}

}

此处列出来的是一个目录下的文件或文件夹名称而已,运行结果如下:

如果现在使用listFiles()呢?

importjava.io.*;

publicclassTing06

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"MLDNWEB");

Filepath[]=file.listFiles();

for(inti=0;i

{

System.out.println(path[i]);

}

}

}

运行结果如下:

这两个操作都同样属于列表的操作,但是后者却可以列出完整的路径,实际上此时,如果为了更加清楚地表示列出的是路径:

importjava.io.*;

publicclassTing06

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"MLDNWEB");

Filepath[]=file.listFiles();

for(inti=0;i

{

System.out.print(path[i].getParent()+"-->");

System.out.println(path[i].getPath());

}

}

}

运行结果如下:

如果要想操作文件,则肯定使用后者最为方便,因为可以找到File类的对象,实际上就找到了完整的路径。

·创建目录

使用:

publicbooleanmkdir()

importjava.io.*;

publicclassTing07

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"TINGTING");

file.mkdir();

}

}

在windows中有很多文件的后缀,例如:

txt、doc、jpg,实际上这些文件的后缀与文件本身的内容没有任何的联系,加入后缀只是为了方便程序的管理而已。

当然,在创建的时候,也可以在一个文件夹下创建文件

importjava.io.*;

publicclassTing07

{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile("d:

"+File.separator+"TINGTING"+File.separator+"test.txt");

file.getParentFile().mkdir();

try

{

file.createNewFile();

}

catch(Exceptione)

{

System.out.println(e);

}

}

}

总结:

File类

1创建文件:

publicbooleancreateNewFile()throwsIOException

2删除文件:

publicbooleandelete()

3创建目录:

publicbooleanmkdir()

4判断是否是文件:

publicbooleanisFile()

5判断是否是文件夹:

publicbooleanisDirectory()

6列出目录中的内容:

(1)publicString[]list()

(2)publicFile[]listFiles()

7删除文件之前判断文件是否存在:

publicbooleanexists()

8目录同文件同时需要建立则需要:

file.getParentFile().mkdir();

(二)RandomAccessFile类

具体内容

RandomAccessFile类的主要功能是完成随机读取,可以读取指定位置的内容。

假设现在文件中存储了以下的三个数据:

·zhangsan,30

·lisi,31

·wangwu,32

因为在文件中,所有的内容都是按照字节存放的,都有固定的保存位置。

·RandomAccessFile类的常用操作方法

构造:

publicRandomAccessFile(Filefile,

Stringmode)

throwsFileNotFoundException

实例化此类的时候需要传递File类,告诉程序应该操作的是哪个文件,之后又一个模式,文件的打开模式,常用的三种模式:

·r:

读模式

·w:

只写

·rw:

读写,如果使用此模式,如果文件不存在,则会自动创建。

importjava.io.File;

importjava.io.RandomAccessFile;

publicclassRandomAccessFileDemo01{

//所有的异常直接抛出,程序中不再进行处理

publicstaticvoidmain(Stringargs[])throwsException{

Filef=newFile("d:

"+File.separator+"test.txt");//指定要操作的文件

RandomAccessFilerdf=null;//声明RandomAccessFile类的对象

rdf=newRandomAccessFile(f,"rw");//读写模式,如果文件不存在,会自动创建

Stringname=null;

intage=0;

name="zhangsan";//字符串长度为8

age=30;//数字的长度为4

rdf.writeBytes(name);//将姓名写入文件之中

rdf.writeInt(age);//将年龄写入文件之中

name="lisi";//字符串长度为8不够的话空格补齐

age=31;//数字的长度为4

rdf.writeBytes(name);//将姓名写入文件之中

rdf.writeInt(age);//将年龄写入文件之中

name="wangwu";//字符串长度为8

age=32;//数字的长度为4

rdf.writeBytes(name);//将姓名写入文件之中

rdf.writeInt(age);//将年龄写入文件之中

rdf.close();//关闭

}

};

以上完成了写入的操作,每条数据的长度都是12位。

写完之后,开始读取数据。

写的时候可以将一个字符串写入,读的时候需要一个个地以字节的形式读取出来。

importjava.io.File;

importjava.io.RandomAccessFile;

publicclassRandomAccessFileDemo02{

//所有的异常直接抛出,程序中不再进行处理

publicstaticvoidmain(Stringargs[])throwsException{

Filef=newFile("d:

"+File.separator+"test.txt");//指定要操作的文件

RandomAccessFilerdf=null;//声明RandomAccessFile类的对象

rdf=newRandomAccessFile(f,"r");//以只读的方式打开文件

Stringname=null;

intage=0;

byteb[]=newbyte[8];//开辟byte数组

//读取第二个人的信息,意味着要空出第一个人的信息

rdf.skipBytes(12);//跳过第一个人的信息

for(inti=0;i

b[i]=rdf.readByte();//读取一个字节

}

name=newString(b);//将读取出来的byte数组变为字符串

age=rdf.readInt();//读取数字

System.out.println("第二个人的信息-->姓名:

"+name+";年龄:

"+age);

//读取第一个人的信息

rdf.seek(0);//指针回到文件的开头

for(inti=0;i

b[i]=rdf.readByte();//读取一个字节

}

name=newString(b);//将读取出来的byte数组变为字符串

age=rdf.readInt();//读取数字

System.out.println("第一个人的信息-->姓名:

"+name+";年龄:

"+age);

rdf.skipBytes(12);//空出第二个人的信息

for(inti=0;i

b[i]=rdf.readByte();//读取一个字节

}

name=newString(b);//将读取出来的byte数组变为字符串

age=rdf.readInt();//读取数字

System.out.println("第三个人的信息-->姓名:

"+name+";年龄:

"+age);

rdf.close();//关闭

}

};

如果要想操作文件内容的话,可以使用RandomAccessFile完成

总结:

1、RandomAccessFile类的作用

2、RandomAccessFile类操作起来比较麻烦,所以在IO中会提供专门的输入、输出操作。

(三)字节流与字符流类

具体内容

·流的概念

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。

程序中的输入输出都是以流的形式保存的,流中保存的实际上全部都是字节文件。

·字节流与字符流的作用

在java.io包中操作文件内容的主要有两大类:

字节流、字符流,两类都分输入和输出操作。

在字节流中输出数据主要是使用OutputStream完成,输入使得是InputStream,在字符流中输出主要是使用Writer类完成,输入主要是使用Reader类完成。

内容操作就四个类:

OutputStream、InputStream、Writer、Reader

·操作流程

在java中IO操作也是有相应步骤的,以文件操作为例,主要操作流程如下:

A、使用File类打开一个文件

B、通过字节流或字符流的子类,指定输出地位置

C、进行读/写操作

D、关闭输入/输出

使用File类操作的时候一定要有路径的问题,注意分隔符。

实际上四个操作类都是抽象类

IO操作属于资源操作,对于资源操作,操作的最后必须关闭否则就有可能出现未知的错误。

·字节流

字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream。

·字节输出流:

OutputStream

·字节输入流:

InputStream

Byte是字节,肯定使用字节流操作。

所有的数据基本上都可以直接使用byte数组表示出来。

·字节输出流:

OutputStream

·OutputStream是整个IO包中字节输出流的最大父类,此类的定义如下:

·publicabstractclassOutputStreamextendsObject

implementsCloseable,Flushable

·从以上的定义中可以发现,此类是以个抽象类,如果要想使用此类的话,则首先必须通过子类实例化对象,那么如果现在要操作的是一个文件,则可以使用:

FileOutputStream类。

通过向上转型之后,可以以OutputStream实例化。

Clonseable:

表示可以关闭的操作,因为程序运行到最后肯定要关闭

Fluashable:

表示刷新,清空内存中的数据

·OutputStream类的常用方法

1

publicvoidclose()throwsIOException

普通

关闭输出流

2

publicvoidflush()throwsIOException

普通

刷新缓冲区

3

publicvoidwrite(byte[]b)throwsIOException

普通

将一个byte数组写入数据流

4

publicvoidwrite(byte[]b,intoff,intlen)throwsIOException

普通

将一个指定范围的byte数组写入数据流

5

publicabstractvoidwrite(intb)throwsIOException

普通

将一个字节数据写入数据流

要想使用以上方法,必须使用子类实例化,此时使用FileOutputStream子类,此类的构造方法如下:

publicFileOutputStream(Filefile)throwsFileNotFoundException

importjava.io.File;

importjava.io.OutputStream;

importjava.io.FileOutputStream;

publicclassOutputStreamDemo01{

publicstaticvoidmain(Stringargs[])throwsException{//异常抛出,不处理

//第1步、使用File类找到一个文件

Filef=newFile("d:

"+File.separator+"test.txt");//声明File对象

//第2步、通过子类实例化父类对象

OutputStreamout=null;//准备好一个输出的对象

out=newFileOutputStream(f);//通过对象多态性,进行实例化

//第3步、进行写操作

Stringstr="HelloWorld!

!

!

";//准备一个字符串

byteb[]=str.getBytes();//只能输出byte数组,所以将字符串变为byte数组

out.write(b);//将内容输出,保存文件

//第4步、关闭输出流

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

}

};

在操作的时候,如果文件本身不存在,则会为用户自动创建新文件。

在操作输出流的时候,也可以使用write(inti)方法写出数据。

importjava.io.File;

importjava.io.OutputStream;

importjava.io.FileOutputStream;

publicclassOutputStreamDemo02{

publicstaticvoidmain(Stringargs[])throwsException{//异常抛出,不处理

//第1步、使

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2