第 10章 文件 I/0技术
JSP 动态网页新技术 1
创建 File对象
SP网页结合 Java类库里的 I/O类,可以轻易的开发具备文件存取功能的网页程序,该类提供新增、删除与修改等操作文件相关功能所需的方法成员 。
创建 File类的实体对象,
File myFile = new File(filePath,fileName) ;
– 第个 1参数 filePath代表文件路径 。
– 第 2个参数 fileName则是文件名称 。
– 当 JSP解译这一段语法成功之后,一个名称为 myFile的文件对象被建立 。
– 文件对象根据参数 所指定 路径 下的 文件,以后网页则以 myFile
名称引用 File对象的特定方法成员,进行文件操作维护操作。
第 10章 文件 I/0技术
JSP 动态网页新技术 2
创建 File对象 -目录
建立 参考至特定目录的 File对象 。
File myFile = new File(filePath) ;
– filePath为 特定的 目录路径
File本身所代表的是一种路径,无论这个路径是指向目录或是特定的文件 。
第 10章 文件 I/0技术
JSP 动态网页新技术 3
加载 java.io 命名空間
File类位于命名空间 Java.io,因此在 JSP网页使用 File类之前,必须利用以下的程序代码,将此命名空间载入,
<%@ page import ="Java.io.*" %>
第 10章 文件 I/0技术
JSP 动态网页新技术 4
File类属性 存取方 法 说 明
isDirectory() 返回一个布尔值,true示为目录,false则是文件,用以判断 File对象所参考的路径是否为目录
isFile() 返回一个布尔值,true示为文件,false则是目录,用以判断 File对象所参考的路径是否为文件
canRead() 返回布尔值,true表示此为允许读取的文件
CanWrite() 返回布尔值,true表示此为允许写入的文件
Exists() 返回一个布尔值,true表示参考的文件目录存在
GetName() 取得 File对象所参考的路径底下目录或文件名称
GetPath() 取得 File对象所参考的路径字符串
ToString() 将 File对象转换成为以字符串类型的名称表示
Equals() 比较两个 File对象是否相等第 10章 文件 I/0技术
JSP 动态网页新技术 5
文件维护 操作方 法 说 明
CreateNewFile() 建立一个新的文件
delete() 删除指定的文件
renameTo() 重新命名文件
setReadonly 将文件对象所参照的文件设为只读
mkdir() 建一指定的目录
mkdirs() 建立指定路径下的所有目录第 10章 文件 I/0技术
JSP 动态网页新技术 6
新建文件
CreateNewFile()的方法成员,用以建立 File对象参数所指定的文件 。
bool blCreate = myFile.CreateNewFile() ;
– 结果值为 true,表示文件建立成功;若是 false则表示文件建立失败,并且返回一个 IOException例外对象 。
第 10章 文件 I/0技术
JSP 动态网页新技术 7
建立 目录文件夹
mkdir用以建立指定的 目录 。
File myFile = new File(pathName) ;
bool blMK = myFile.mkdir() ;
– 引用这个方法所要建立的是一个目录,因此第 1行程序代码中所指定的参数值必须是一个路径而非文件 。
若是 mkdirs() 指定的 目录路径 不存在,则整个目录结构 均 会 被建立。
File myMkDirs = new File("C:/firstDir/secondDir/thirdDir") ;
blNew = myMkDirs.mkdirs() ;
– C:/firstDir/secondDir/thirdDir这个路径的文件夹以及子文件夹,都会被建立 。
第 10章 文件 I/0技术
JSP 动态网页新技术 8
刪除 文件与目录文件夹
删除文件或者是目录只要引用 File类所提供方法成员 delete() 即可 。
delete方法有一个布尔类型的返回值,若是成功删除指定删除文件,
则返回值为 true,当指定的文件不存在,或是指定的文件删除失败,则返回值为 false 。
delete方法只能删除空目录,若是目录底下存在任何文件或是子目录,删除的操作会失败,并且返回一个代表删除目录失败的 false
布尔值 。
第 10章 文件 I/0技术
JSP 动态网页新技术 9
列举文件目录结构方 法 说 明
list() 列举指定目录下,所有的子目录以及文件成员名称,并且以一个包含所有成员名称的 String数组回传 。
listFiles() 同 listFiles,其返回值为 File对象
listRoots() 列出当前系统里,所有的根目对象,以 File对象类型返回
GetParent() 返回特定文件目录其上一层的目录文件字符串名称
GetParent() 返回特定文件目录其上一层的目录文件对象第 10章 文件 I/0技术
JSP 动态网页新技术 10
列举文件目录结构
list()用以获取指定目录底下,所有的成员名称,listFiles则是将所有成员存放于一个 File数组对象返回,引用方法如下,
String[] strFiles = myFile.list() ;
File[] objFiles = myFile.listFiles() ;
– strFiles数组包含 myFile下所有文件和子目录的名称字符串
– objFiles则是包含 myFile下,代表所有文件以及子目录的对象数组 。
– 只有当 myFile这个 File对象所代表的是一个目录的时候,才会有意义,若是其参照对象是一个文件,则返回值一律为 null 。
– 操作的文件或是目录本身不允许存取,则系统会产生一个与 安全相关的例外对象,SecurityException禁止程序对文件目录不合法的存取 。
第 10章 文件 I/0技术
JSP 动态网页新技术 11
列举文件目录结构
方法 listRoots()被设计用以列举文件系统里,所有根目录的名称代号 。
File[] strFiles = File.listRoots() ;
– listRoots()是用以直接列举应用程序运行系统中,所有的根目录文件对象,而非针对特定目录,因此必须直接以 File类引用这个方法 。
getParent()可用以取得指定目录文件的上层目录,其返回值为一个代表当前文件位置的上一层目录路径,这个方法有两种版本,除 了 getParent(),另外还有一个 getParentFile(),这个版本的方法直接回传一个代表上层目录的 File对象 。
第 10章 文件 I/0技术
JSP 动态网页新技术 12
写入文件数据
文件被用以储存各种数据内容 。
FileWriter()负责将数据写入文件 。
FileReader()用以读取文件中的数据 。
第 10章 文件 I/0技术
JSP 动态网页新技术 13
写入文件数据
将数据写入文字文件之前,首先必须建立 FileWriter对象,同时传入所要操作的文件完整路径名称字符串 。
FileWriter myFileWriter = new
FileWriter(fileName )
– myFileWriter为 参考路径文件 fileName的 写入文件对象,允许应用程序将文字数据写入其中 。
传入 文件对象 myFile即可建立用以编辑的写入文件对象 。
FileWriter myFileWriter =
new FileWriter(myFile )
Write方法可以写入各种类型的数据内容 。
FileWriter myFW = new FileWriter("test.txt") ;
myFW.write("This is a test String") ;
第 10章 文件 I/0技术
JSP 动态网页新技术 14
读取文件数据建立一个 FileReader对象,然后引用其提供的方法成员 Reader,
读取文件的数据内容 。
FileReader myFileReader = new
FileReader(strFileName) ;
FileReader myFileReader = new
FileReader(objFile) ;
第 10章 文件 I/0技术
JSP 动态网页新技术 15
读取文件数据
read()方法 一次读取文件中的一个字符,并且返回代表这个字符的整数值 。
int i ;
char chrRead() ;
i = myFileReader.read() ;
chrRead = (char)i;
– 由于 read方法所返回的结果为字符数据的整数类型,将其进一步转型为 char类型以输出正确的文字数据 。
read方法的另外一个版本可以一次读取指定特定长度的数据内容 。
char[]arrChar = new char[1024] ;
myFileReader.read(arrChar) ;
– 读取的字符被储存至字符组数组参数 arrChar,返回值为所读取的字符数目 。
第 10章 文件 I/0技术
JSP 动态网页新技术 16
文件上传 功能两个 被 广泛 使用的 上传包,
jspSmart所提供的 jspSmartUpload包 。
O’Reilly的 MultipartRequest 。
第 10章 文件 I/0技术
JSP 动态网页新技术 17
jspSmartUpload上传操作
jspSmartUpload 包 中的 类 SmartUpload,提供 上传操作所需 的功能,分成 3个阶段,
初始化
上传
储存文件第 10章 文件 I/0技术
JSP 动态网页新技术 18
初始化
theSmartUpload为 SmartUpload的名称,pageContext则是初始化过程所需的对象 。
theSmartUpload.initialize(pageContext) ;
设定 所 允许 的 文件 大小。
theSmartUpload.setTotalMaxFileSize
(10*1024*1024) ;
第 10章 文件 I/0技术
JSP 动态网页新技术 19
上传初始化完成之后,紧接着直接调用 upload(),开始进行上传操作,调用方法如下所示:
theSmartUpload.upload() ;
这个方法没有任何参数,它将表单上所有指定的文件直接上传 。
第 10章 文件 I/0技术
JSP 动态网页新技术 20
储存文件
save()用来指定上传之后文件所要储存的位置 。
fileCount=theSmartUpload.save(fileSavePath) ;
– fileSavePath代表所要上传之后的文件所要储存的位置。
– save()方法完成文件的储存工作之后,便会返回一个代表上传文件数目的整数值,上式的 fileCount用来储存这个值 。
HTML文件文本框标签,可以提供 文件文本框 的需求。
<input type=file name=File1 size=50 />
用 来包含文件标签 的 表单,其 编码 格式 必须设定为 multipart/form-
data。
<form action=actionpage enctype="multipart/form-data" >
第 10章 文件 I/0技术
JSP 动态网页新技术 21
获取文件信息方 法 说 明
getFieldName() 文件来自表单的属性名称
getFileName() 文件名称
getFileExt() 文件扩展名
getFilePathName() 文件路径名称
getContentType() 文件类型
getSize() 文件大小第 10章 文件 I/0技术
JSP 动态网页新技术 22
保存上传文件
setTotalMaxFileSize()用来限制允许上传的文件类型 。
theSmartUpload.setAllowedFilesList(fileType) ;
fileType代表允许上传的文件类型字符串 。
theSmartUpload.setAllowedFilesList("txt,htm") ;
第 10章 文件 I/0技术
JSP 动态网页新技术 23
保存上传文件
saveAs()用来指定上传文件所要储存的路径与文件名 。
theFile.saveAs(fileName,pathType) ;
– fileName为所要储存的路径以及文件名称,
– pathType則是 设定路径的类型,这是一个列举值,可用的值有
3个,分别是 SAVE_PHYSICAL,SAVE_VIRTUAL和
SAVE_AUTO,分别代表实体、虚拟和自动设定 。
第 10章 文件 I/0技术
JSP 动态网页新技术 24
MultipartRequest方法 成员方 法 说 明
getFileNames() 取得包含所有文件上传文件名称的
Enumeration对象
getFilesystemName(fieldName) 取得文件名名称
getContentType(fieldName) 取得文件名类型
getFile(fieldName) 取得 File文件对象