JAVA针对各种文件操作Word文件下载.docx
- 文档编号:20794903
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:41
- 大小:27.94KB
JAVA针对各种文件操作Word文件下载.docx
《JAVA针对各种文件操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA针对各种文件操作Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。
\\w+@\\w+.((com)|()|(cn)|(net)|()|(org)|(edu))"
));
}
};
2.2、本次预计讲解的知识点
1、File类的作用及使用
2、字节输入流/字节输出流、字符输入流/字符输出流
3、内存操作流
4、打印流
5、对象序列化
3、具体内容
在整个JAVA中所有的文件操作都是使用java.io包完成的,此包中包含了各种操作的类及接口。
IO包中有以下几个主要部分组成:
•表示与文件本身的操作:
File
•IO的输入、输出类
•对象序列化
3.1、File类(重点)
在整个IO包中,File类是唯一表示文件本身的,即:
文件的创建、删除、存在与否的判断。
File类在使用的时候需要指定操作的文件路径,构造方法:
•publicFile(Stringpathname)
例如:
现在使用File类在硬盘上创建一个新的文件(e:
\abc.txt)
•创建文件的方法:
publicbooleancreateNewFile()throwsIOException
importjava.io.*;
publicclassIODemo01{
//告诉系统准备操作这样的一个文件
Filef=newFile("
e:
\\abc.txt"
);
try{
System.out.println(f.createNewFile());
}catch(Exceptione){}
删除在硬盘上建立好的文件
•删除文件的方法:
publicbooleandelete()
publicclassIODemo02{
//删除文件
f.delete();
但是以上有一个问题,至少文件存在之后才可以删除。
证明,在删除之前需要先判断此文件是否存在,判断语法:
publicbooleanexists():
publicclassIODemo03{
if(f.exists()){
要求完成以下的功能
•如果文件存在则删除,如果文件不存在则创建
publicclassIODemo04{
}else{
f.createNewFile();
发现此种操作并不是立刻生效的,有一定时间的延迟。
注意:
如果在程序中直接输出File类的对象,则会打印路径名称。
publicclassIODemo05{
System.out.println(f);
输出结果:
\abc.txt
要求列出一个目录下的所有内容
方法名称如下:
•publicString[]list():
只列出了所有的文件夹或文件的名称,不是绝对路径
•publicFile[]listFiles():
取得的是绝对路径
A、使用list()方法操作:
publicclassIODemo06{
\\"
Strings[]=f.list();
for(inti=0;
i<
s.length;
i++){
System.out.println(s[i]);
B、使用listFiles()方法操作
publicclassIODemo07{
Filefs[]=f.listFiles();
fs.length;
System.out.println(fs[i]);
区分一个给定的路径是文件还是文件夹
•方法名称:
publicbooleanisDirectory()
publicclassIODemo08{
System.out.println(f.isDirectory());
思考:
任意给定一个路径,要求把此路径下的所有文件包括各个子文件夹的文件全部列出。
•思路:
|-通过给定的路径判断是否是一个文件夹
|-如果是一个文件夹,则继续列出里面的内容
|-之后再将此文件夹里面的内容继续判断,观察是否是目录
publicclassIODemo09{
print(f);
publicstaticvoidprint(Filef){
if(f.isDirectory()){
Filefiles[]=f.listFiles();
files.length;
//如果还有子文件夹,则肯定继续列出
print(files[i]);
3.2、RandomAccessFile类(了解)
RandomAccessFile:
实现随机访问,可以在文件之中跳转。
在保存内容的时候,必须指定内容的长度。
现在向文件之中写入如下数据:
•zhangsan30
•lisi31
•wangwu32
通过RandomAccessFile类向文件中保存内容
•构造方法:
publicRandomAccessFile(Filefile,Stringmode)throwsFileNotFoundException
|-Stringmode:
表示的是文件的打开模式:
|-只读:
r,但是使用此种方式的时候必须保证文件存在。
|-读写:
rw,使用此种方式的时候,向文件中写入数据,如果文件不存在,则会自动创建一个新的文件出来
•向文件中写数据:
•向文件中写入字符串:
publicfinalvoidwriteBytes(Strings)throwsIOException
•向文件中写入数字:
publicfinalvoidwriteInt(intv)throwsIOException
•文件操作之后必须关闭:
•关闭:
publicvoidclose()throwsIOException
利用以上方法完成文件的写入,可是写的时候,必须注意,所有的内容长度必须固定。
publicclassIODemo10{
publicstaticvoidmain(Stringargs[])throwsException{
"
+File.separator+"
hello.txt"
RandomAccessFileraf=null;
//如果文件不存在,则会自动创建一个
raf=newRandomAccessFile(f,"
rw"
Stringname=null;
intage=0;
name="
zhangsan"
age=30;
raf.writeBytes(name);
raf.writeInt(age);
lisi"
age=31;
wangwu"
age=32;
raf.close();
通过RandomAccessFile取出里面的内容
•因为是读,所以可以使用只读的方式打开文件:
r
•读字符串:
publicfinalbytereadByte()throwsIOException
|-使用byte的方式读取进来
•读数字:
publicfinalintreadInt()throwsIOException
•跳过指定长度的内容:
publicintskipBytes(intn)throwsIOException
•跳回位置:
publicvoidseek(longpos)throwsIOException
publicclassIODemo11{
r"
byteb[]=newbyte[8];
//跳过第一个人的信息
raf.skipBytes(12);
b.length;
b[i]=raf.readByte();
age=raf.readInt();
name=newString(b);
System.out.println("
姓名:
+name);
年龄:
+age);
raf.seek(0);
3.3、字节流、字符流操作类(重点)
文件操作的基本流程:
1、通过File类找到一个文件
2、通过File类去实例化字节流、字符流操作类
3、进行读或写的操作,在写的时候如果文件不存在则会自动创建
4、关闭文件
3.3.1、字节流
在字节流中分为两种:
•输出流:
OutputStream
•输入流:
InputStream
向文件之中打印一个“HelloWorld!
!
”。
•肯定使用输出流。
定义:
publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable
•OutputStream子类:
FileOutputStream
构造方法:
publicFileOutputStream(Filefile)throwsFileNotFoundException
•输出方法:
publicvoidwrite(byte[]b)throwsIOException可以发现只能写出一个byte数组,那么现在是一个字符串,如果要想使用此种方式,需要将一个字符串变为一个byte数组,String中的方法:
publicbyte[]getBytes()。
publicclassIODemo12{
publicstaticvoidmain(String[]args){
//通过File找到一个文件
\\hello.txt"
//输出流操作类
OutputStreamout=null;
//通过子类实例化
out=newFileOutputStream(f);
HelloWorld!
byteb[]=str.getBytes();
out.write(b);
out.close();
}
既然可以通过OutputStream向文件中写入内容,那么就一定可以从文件中读取内容,使用InputStream读取内容。
•InputStream也是一个抽象类,所以必须使用其子类:
FileInputStream
•读的方式:
•publicintread(byte[]b)throwsIOException
|-传入一个byte数组,将所有的内容保存在byte数组之中。
|-此方法返回向数组中写入数据的个数
•将byte数组变为字符串:
publicString(byteb[])、publicString(byteb[],intbe,intlen)
publicclassIODemo13{
InputStreaminput=null;
input=newFileInputStream(f);
byteb[]=null;
intlen=0;
b=newbyte[1024];
//把所有的内容读到数组b中
//返回读取的个数
len=input.read(b);
input.close();
System.out.println(newString(b,0,len));
•但是读取的时候发现程序中开辟了一个很大的byte数组,不用的空间有些浪费,那能否根据文件的大小开辟呢?
•File类中有取得文件长度的方法。
publicclassIODemo14{
b=newbyte[(int)f.length()];
input.read(b);
System.out.println(newString(b));
•如果现在不知道文件大小,该怎么读呢?
•读取方法:
|-publicabstractintread()throwsIOException
|-如果读取的内容不是“-1”,就表示还有文件,可以继续读
publicclassIODemo15{
intx=0;
intfoot=0;
while((x=input.read())!
=-1){
b[foot]=(byte)x;
foot++;
}catch(Exceptione){
System.out.println(e);
3.3.2、字符流
一个字符=两个字节。
在字符流操作中,主要使用以下两个类:
•字符输出流:
Writer
•字符输入流:
Reader
向文件中保存一个数据
写内容的方法:
publicvoidwrite(Stringstr)throwsIOException
publicclassIODemo16{
Writerout=null;
out=newFileWriter(f);
out.write(str);
从文件中把内容读取进来
读的方法:
|-publicintread(char[]cbuf)throwsIOException
|-publicintread()throwsIOException
publicclassIODemo17{
Re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 针对 各种 文件 操作