王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、File1.1、File概述

文件和目录路径名的抽象表示形式。

用户界面和操作系统使用与系统相关的路径名字符串来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名有两个组件:

一个可选的与系统有关的前缀字符串,比如盘符,"/"表示 UNIX 中的根目录,"\\\\"表示 Microsoft Windows UNC 路径名。零个或更多字符串名称的序列。 字段摘要static String

pathSeparator

与系统有关的路径分隔符,为了方便,它被表示为一个字符串。

static char

pathSeparatorChar

与系统有关的路径分隔符。

static String

separator

与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。

static char

separatorChar

与系统有关的默认名称分隔符。

构造方法摘要File(File parent, String child)

根据

parent 抽象路径名和 child 路径名字符串创建一个新File实例。

File(String pathname)

通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。

File(String parent, String child)

根据

parent 路径名字符串和 child 路径名字符串创建一个新File实例。

File(URI uri)

通过将给定的file:URI 转换为一个抽象路径名来创建一个新的File实例。

方法摘要boolean

canExecute()

测试应用程序是否可以执行此抽象路径名表示的文件。

boolean

canRead()

测试应用程序是否可以读取此抽象路径名表示的文件。

boolean

canWrite()

测试应用程序是否可以修改此抽象路径名表示的文件。

int

compareTo(File pathname)

按字母顺序比较两个抽象路径名。

boolean

createNewFile()

当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

static File

createTempFile(StringPRefix, String suffix)

在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。

static File

createTempFile(String prefix, String suffix, File directory)

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。

boolean

delete()

删除此抽象路径名表示的文件或目录。

void

deleteOnExit()

在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

boolean

equals(Object obj)

测试此抽象路径名与给定对象是否相等。

boolean

exists()

测试此抽象路径名表示的文件或目录是否存在。

File

getAbsoluteFile()

返回此抽象路径名的绝对路径名形式。

String

getAbsolutePath()

返回此抽象路径名的绝对路径名字符串。

File

getCanonicalFile()

返回此抽象路径名的规范形式。

String

getCanonicalPath()

返回此抽象路径名的规范路径名字符串。

long

getFreeSpace()

返回此抽象路径名指定的分区中未分配的字节数。

String

getName()

返回由此抽象路径名表示的文件或目录的名称。

String

getParent()

返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

File

getParentFile()

返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回null。

String

getPath()

将此抽象路径名转换为一个路径名字符串。

long

getTotalSpace()

返回此抽象路径名指定的分区大小。

long

getUsableSpace()

返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

int

hashCode()

计算此抽象路径名的哈希码。

boolean

isAbsolute()

测试此抽象路径名是否为绝对路径名。

boolean

isDirectory()

测试此抽象路径名表示的文件是否是一个目录。

boolean

isFile()

测试此抽象路径名表示的文件是否是一个标准文件。

boolean

isHidden()

测试此抽象路径名指定的文件是否是一个隐藏文件。

long

lastModified()

返回此抽象路径名表示的文件最后一次被修改的时间。

long

length()

返回由此抽象路径名表示的文件的长度。

String[]

list()

返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

String[]

list(FilenameFilter filter)

返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]

listFiles()

返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

File[]

listFiles(FileFilter filter)

返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]

listFiles(FilenameFilter filter)

返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

static File[]

listRoots()

列出可用的文件系统根。

boolean

mkdir()

创建此抽象路径名指定的目录。

boolean

mkdirs()

创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

boolean

renameTo(File dest)

重新命名此抽象路径名表示的文件。

boolean

setExecutable(boolean executable)

设置此抽象路径名所有者执行权限的一个便捷方法。

boolean

setExecutable(boolean executable,

boolean ownerOnly)

设置此抽象路径名的所有者或所有用户的执行权限。

boolean

setLastModified(long time)

设置此抽象路径名指定的文件或目录的最后一次修改时间。

boolean

setReadable(boolean readable)

设置此抽象路径名所有者读权限的一个便捷方法。

boolean

setReadable(boolean readable,

boolean ownerOnly)

设置此抽象路径名的所有者或所有用户的读权限。

boolean

setReadOnly()

标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。

boolean

setWritable(boolean writable)

设置此抽象路径名所有者写权限的一个便捷方法。

boolean

setWritable(boolean writable,

boolean ownerOnly)

设置此抽象路径名的所有者或所有用户的写权限。

String

toString()

返回此抽象路径名的路径名字符串。

URI

toURI()

构造一个表示此抽象路径名的file:URI。

URL

toURL()

已过时。此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过toURI方法将其转换为

URI,然后通过URI.toURL方法将 URI 装换为 URL。

1.2、File创建与删除

importjava.io.*;classFileDemo1

{publicstaticvoidmain(String[] args)

{

method1();

}publicstaticvoidmethod1()

{//创建File对象File f1=newFile("a.txt");//第二种File f2=newFile("d:\\abc","b.txt");//第三种File dir=newFile("d:\\bcd");

File f3=newFile(dir,"c.txt");//使用分隔符File f4=newFile("d:"+File.separator+"abc"+File.separator+"d.txt");//输出System.out.println("f1="+f1);//a.txtSystem.out.println("f2="+f2);//d:\abc\b.txtSystem.out.println("f3="+f3);//d:\bcd\c.txtSystem.out.println("f4="+f4);//d:\abc\d.txt}

}

创建文件

//创建文件,在指定位置创建文件,如果该文件已经存在,则不创建,返回 falsepublicstaticvoidmethod1()throwsIOException

{

File f=newFile("d:\\file.txt");//创建sop("create: "+f.createNewFile());//删除,删除失败返回false//sop("delete:"+f.delete());//在退出时删除指定文件f.deleteOnExit();

}

1.3、File判断 File获取

packagecom.pb.day20.io.file;importjava.io.File;importjava.io.IOException;publicclassFileDemo2 {publicstaticvoidmain(String[] args)throwsIOException {

File f1=newFile("d:\\a.txt");

File f2=newFile("e:\\c.txt");

File dir1=newFile("d:\\dbc");

File dir2=newFile("d:\\dbc\\dd\\aa\\d\\f\\dsf\\fsd");//判断文件是否存在,不存在就创建if(!f1.exists()){

f1.createNewFile();

}//判断文件夹是否存在if(!dir1.exists()){

dir1.mkdir();//创建一层文件夹}//创建多层文件夹if(!dir2.exists()){

dir2.mkdirs();

}//判断sop("f1是文件吗?"+f1.isFile());

sop("dir1是文件夹吗?"+dir1.isDirectory());

sop("f1是可执行文件吗?"+f1.canExecute());

sop("f1可读吗?"+f1.canRead());

sop("f1可写吗?"+f1.canWrite());

sop("f1是隐藏文件吗?"+f1.isHidden());//获取文件信息sop(f1.getName());//文件名sop(f1.getPath());//相对路径sop(f1.getAbsolutePath());//获取绝对路径,返回值是字符串sop(f1.getAbsoluteFile());//获取绝对路径,返回值是File类对象sop(f1.lastModified());//最后修改时间 长整型sop(f1.length());//文件字节大小,长整型//重命名sop(f1.renameTo(f2));//剪切的作用}publicstaticvoidsop(Object obj){

System.out.println(obj);

}

}

1.4、File文件列表

packagecom.pb.day20.io.file;importjava.io.File;importjava.io.FilenameFilter;publicclassFileDemo3 {publicstaticvoidmain(String[] args) {

method3();

}//列出当前目录下的指定文件publicstaticvoidmethod3(){

File f=newFile("d:\\");

File [] files=f.listFiles(newFilenameFilter() {

@Overridepublicbooleanaccept(File dir, String name) {//返回txt文件returnname.endsWith(".txt");

}

});for(File ff:files){

System.out.println(ff.getName()+"..."+ff.length());

}

}//列表当前目录下的所有文件包含文件夹名字publicstaticvoidmethod2(){

File f=newFile("c:\\");

String [] names=f.list();//必须是目录,否则就是空指针异常for(String s:names){

System.out.println(s);

}

}//列出当前系统的所有盘符publicstaticvoidmethod1(){

File [] files=File.listRoots();for(File f:files){

System.out.println(f);

}

}

}

1.6、File列出所有递归

packagecom.pb.day20.io.file;/*** 递归调用,

* 列表指定目录下的,所有文件包括子目录中的文件*/importjava.io.File;publicclassFileDemo4 {publicstaticvoidmain(String[] args) {

File dir=newFile("d:\\");

getFiles(dir);

}//递归publicstaticvoidgetFiles(File dir){

System.out.println(dir);//获取文件数组,列表File[] files=dir.listFiles();//遍历for(File file:files){//判断是不是文件夹if(file.isDirectory()){//是文件夹就再次调用getFiles(file);

}else{//不是就列表System.out.println(file);

}

}

}

}

递归:

限定条件

注意递归的次数,尽量避免内存溢出

1.7、File删除带文件的目录

packagecom.pb.day20.io.file;importjava.io.File;publicclassFileDemo5 {publicstaticvoidmain(String[] args) {

File dir=newFile("d:\\kk");

removeDir(dir);

}//删除,带有文件的多层文件夹publicstaticvoidremoveDir(File dir){

File [] files=dir.listFiles();for(intx=0;x<files.length;x++){if(files[x].isDirectory()){

removeDir(files[x]);

}else{//删除文件System.out.println(files[x]+"----file----"+files[x].delete());

}

}//删除空文件夹System.out.println(dir+"----dir----"+dir.delete());

}

}

1.8、将一个文件夹的的所有文件,包含子目录都复制要另一个目录下

/*将一个文件夹的的所有文件,包含子目录都复制要另一个目录下*/importjava.io.*;classIOCopy

{publicstaticvoidmain(String[] args)

{//源文件File src=newFile("D:\\music");//目的文件File des=newFile("e:\\test");

copyDir(src,des);

System.out.println("复制完成!");

}/*递归复制*/publicstaticvoidcopyDir(File src,File des)

{//获取列表File[] files=src.listFiles();//判断目标文件是否存在if(!des.exists()){//创建目录des.mkdir();

}//遍历for(File f:files)

{//判断是不是目录if(f.isDirectory())

{//获取路径,拼接文件名,再次调用自己copyDir(newFile(f.getPath()),newFile(des+"\\"+f.getName()));//是不是文件}elseif(f.isFile())

{//复制copyFile(newFile(f.getPath()),newFile(des+"\\"+f.getName()));

}

}

}//使用IO流复制文件publicstaticvoidcopyFile(File src,File des)

{

BufferedInputStream bis=null;

BufferedOutputStream bos=null;try{

bis=newBufferedInputStream(newFileInputStream(src));

bos=newBufferedOutputStream(newFileOutputStream(des));//声明缓冲区intlen=0;while((len=bis.read())!=-1)

{

bos.write(len);

}

}catch(IOException e)

{

e.printStackTrace();

}finally{try{if(bos!=null)

bos.close();

}catch(IOException e)

{

e.printStackTrace();

}try{if(bis!=null)

bis.close();

}catch(IOException e)

{

e.printStackTrace();

}

}

}

}

二、Properties2.1、Properties概述

构造方法摘要Properties()

创建一个无默认值的空属性列表。

Properties(Properties defaults)

创建一个带有指定默认值的空属性列表。

方法摘要String

getProperty(String key)

用指定的键在此属性列表中搜索属性。

String

getProperty(String key, String defaultValue)

用指定的键在属性列表中搜索属性。

void

list(PrintStream out)

将属性列表输出到指定的输出流。

void

list(PrintWriter out)

将属性列表输出到指定的输出流。

void

load(InputStream inStream)

从输入流中读取属性列表(键和元素对)。

void

load(Reader reader)

按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

void

loadFromxml(InputStream in)

将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。

Enumeration<?>

propertyNames()

返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。

void

save(OutputStream out,

String comments)

已过时。如果在保存属性列表时发生 I/O 错误,则此方法不抛出

IOException。保存属性列表的首选方法是通过store(OutputStream out, String comments)方法或storeToXML(OutputStream os, String comment)方法来进行。

Object

setProperty(String key, String value)

调用Hashtable的方法put。

void

store(OutputStream out,

String comments)

以适合使用load(InputStream)方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。

void

store(Writer writer, String comments)

以适合使用load(Reader)方法的格式,将此Properties表中的属性列表(键和元素对)写入输出字符。

void

storeToXML(OutputStream os,

String comment)

发出一个表示此表中包含的所有属性的 XML 文档。

void

storeToXML(OutputStream os,

String comment,

String encoding)

使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。

Set<String>

stringPropertyNames()

返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。

Properties类表示了一个持久的属性集。Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

2.2、存取功能

publicstaticvoidsetAndGet(){//声明Properties prop=newProperties();//设置prop.setProperty("username", "root");

prop.setProperty("passWord","root");//获取用户名对应的值System.out.println(prop.getProperty("username"));//修改密码prop.setProperty("password","root123");//获取全部keySet<String> keys=prop.stringPropertyNames();//遍历for(String s:keys){

System.out.println(s+": "+prop.getProperty(s));

}

}

2.3、存取配置文件

publicstaticvoidmethod2()throwsIOException {//声明Properties集合Properties prop =newProperties();

FileInputStream fis=newFileInputStream("D:/info.txt");

FileOutputStream fos=newFileOutputStream("D:\\info.txt");//加载数组到集合prop.load(fis);

System.out.println(prop);

prop.list(System.out);//修改prop.setProperty("sex", "woman");

prop.store(fos,"sex is woman");

System.out.println(prop);

fos.close();

fis.close();

}publicstaticvoidmethod1()throwsIOException {//文件流BufferedReader br =newBufferedReader(newFileReader("D:\\info.txt"));//声明Properties集合Properties prop =newProperties();

String line=null;//遍历while((line = br.readLine()) !=null) {//System.out.println(line);String[] arr = line.split("=");//System.out.println(arr[0]+"..."+arr[1]);prop.setProperty(arr[0], arr[1]);

}

System.out.println(prop);

br.close();

}

示例

publicstaticvoidmethod()throwsIOException{

File file=newFile("a.txt");//判断文件是否存在if(!file.exists()){

file.createNewFile();

}

FileInputStream fis=newFileInputStream(file);//声明集合Properties prop=newProperties();

prop.load(fis);intcount=0;

String value=prop.getProperty("times");if(value!=null){

count=Integer.parseInt(value);//判断次数if(count>=5){

System.out.println("使用次数已经用完,请续费!");return;

}

}//次数+1count++;//把KEY和VALUE放回去prop.setProperty("times", count+"");

FileOutputStream fos=newFileOutputStream(file);

prop.store(fos,"次数+1");

fos.close();

fis.close();

}

三、PrintWriter与序列流3.1、PrintWriter与PrintStream

packagecom.pb.io.properties.demo1;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;/*** 从键盘接收数据,并输出在控制台

* 使用PrintWriter

**/publicclassPrintWriterDemo {publicstaticvoidmain(String[] args)throwsIOException {//从键盘接收数据,并输出在控制台BufferedReader br=newBufferedReader(newInputStreamReader(System.in));//使用打印流输出,并自动刷新PrintWriter pw=newPrintWriter(newBufferedWriter(newOutputStreamWriter(System.out)),true);

String line=null;

System.out.println("请输入内容,以over结束!");while((line=br.readLine())!=null){if("over".equals(line)){

break;

}

pw.println(line);

}

pw.close();

br.close();

}

}

3.2、序列流--SequenceInputStream

SequenceInputStream表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

构造方法摘要SequenceInputStream(Enumeration<? extends InputStream> e)

通过记住参数来初始化新创建的SequenceInputStream,该参数必须是生成运行时类型为InputStream对象的Enumeration型参数。

SequenceInputStream(InputStream s1, InputStream s2)

通过记住这两个参数来初始化新创建的SequenceInputStream(将按顺序读取这两个参数,先读取s1,然后读取s2),以提供从此SequenceInputStream读取的字节。

方法摘要int

available()

返回不受阻塞地从当前底层输入流读取(或跳过)的字节数的估计值,方法是通过下一次调用当前底层输入流的方法。

void

close()

关闭此输入流并释放与此流关联的所有系统资源。

int

read()

从此输入流中读取下一个数据字节。

int

read(byte[] b,

int off, int len)

将最多len个数据字节从此输入流读入 byte

数组。

四、合并流4.1、合并流

packagecom.pb.io.properties.demo1;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.SequenceInputStream;importjava.util.Enumeration;importjava.util.Vector;publicclassSequenceDemo {publicstaticvoidmain(String[] args)throwsIOException {

Vector<FileInputStream> v=newVector<FileInputStream>();

v.add(newFileInputStream("d:\\1.txt"));

v.add(newFileInputStream("d:\\2.txt"));

v.add(newFileInputStream("d:\\3.txt"));//转换为枚举Enumeration<FileInputStream> en=v.elements();//合并流SequenceInputStream sis=newSequenceInputStream(en);//目标文件FileOutputStream fos=newFileOutputStream("d:\\4.txt");//声明缓冲区byte[] buf=newbyte[1024];intlen=0;while((len=sis.read(buf))!=-1){

fos.write(buf,0,len);

}

fos.close();

sis.close();

}

}

五、分割流5.1、分割流

packagecom.pb.io.properties.demo1;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.SequenceInputStream;importjava.util.ArrayList;importjava.util.Enumeration;importjava.util.Iterator;/*** 将文件切割

* 再合并

**/publicclassSplitDemo {publicstaticvoidmain(String[] args)throwsIOException {//split();merge();

}//合并publicstaticvoidmerge()throwsIOException{

File src=newFile("D:\\split");

File [] files=src.listFiles();

ArrayList<FileInputStream> list=newArrayList<FileInputStream>();for(File f:files){

list.add(newFileInputStream(f));

}

Iterator<FileInputStream> it=list.iterator();//创建枚举Enumeration<FileInputStream> en=newEnumeration<FileInputStream>() {

@OverridepublicFileInputStream nextElement() {returnit.next();

}

@OverridepublicbooleanhasMoreElements() {returnit.hasNext();

}

};//创建合并流SequenceInputStream sis=newSequenceInputStream(en);

FileOutputStream fos=newFileOutputStream("D:\\split\\t.mp3");byte[] buf=newbyte[1024];intlen=0;while((len=sis.read(buf))!=-1){

fos.write(buf,0,len);

}

fos.close();

sis.close();

}//切割publicstaticvoidsplit()throwsIOException{//源文件File file=newFile("D:\\gm.mp3");

FileInputStream fis=newFileInputStream(file);//目标FileOutputStream fos=null;//缓冲区byte[] buf=newbyte[1024*1024];intlen=0;intcount=1;while((len=fis.read(buf))!=-1){

fos=newFileOutputStream("D:\\split\\"+(count++)+".part");

fos.write(buf,0,len);

}

fos.close();

fis.close();

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航