黑马程序员_基础_IO流学习笔记_File对象功能
2014-07-15 15:47
651 查看
-------android培训、java培训、期待与您交流!----------
1、创建和删除
File类:文件和目录路径名的抽象表示形式;用来将文件或者文件夹封装成对象;方便对文件与文件夹的属性信息进行操作;可以作为参数传递给流的构造函数。
1、创建:
boolean createNewFile():在指定位置创建文件,如果文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立就创建文件,而且会覆盖已有文件。
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
2、删除:
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了方法false。
void deleteOnExit():在程序退出时删除指定文件。
boolean exists():文件是否存在。
ifFile():是否是文件。
isDirectory():是否是文件夹。
isHidden():文件是否隐藏。
下面是一个简单练习及相关要点说明:
下面是获取File对象的常见方法和一些要点说明:
下面是测试代码及要点说明
5、列出目录下所有文件及文件夹包含子目录中的文件
下面是使用递推方法列出指定目录下所有文件及文件夹
6、删除带内容的目录
-------
android培训、java培训、期待与您交流! ----------详细请查看:www.itheima.com
1、创建和删除
File类:文件和目录路径名的抽象表示形式;用来将文件或者文件夹封装成对象;方便对文件与文件夹的属性信息进行操作;可以作为参数传递给流的构造函数。
1、创建:
boolean createNewFile():在指定位置创建文件,如果文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立就创建文件,而且会覆盖已有文件。
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
2、删除:
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了方法false。
void deleteOnExit():在程序退出时删除指定文件。
public static void deleteFile(){ File f = new File("G:\\TestFolder\\file.txt"); //程序结束的时候将此文件删除,不管程序是否异常退出 f.deleteOnExit(); //删除失败返回false P.rintln("delete File:" + f.delete()); } //File对象的createNewFile():在指定位置创建文件,如果文件已经存在,则不创建 ,返回false。 //和输出流不一样,输出流对象一建立就会创建文件。而且文件已经存在,会覆盖。 public static void createNewFile() throws IOException{ File f = new File("G:\\TestFolder\\file.txt"); P.rintln("create File:" + f.createNewFile()); }2、判断文件属性
boolean exists():文件是否存在。
ifFile():是否是文件。
isDirectory():是否是文件夹。
isHidden():文件是否隐藏。
下面是一个简单练习及相关要点说明:
public static void judgeFile() throws IOException{ File f = new File("G:\\TestFolder\\file.txt"); P.rintln("exist:" + f.exists()); if(!f.exists()){ f.createNewFile(); } //判断文件是否可执行 P.rintln("execute:" + f.canExecute()); //mkdir只能创建一级目录,mkdirs能创建多级目录 File dir = new File("G:\\TestFolder\\folder1\\a\\b\\c\\d"); P.rintln("mkdirs:" + dir.mkdirs()); //在判断文件对象是否是文件或者目录时,必须要判断该文件对象封装的内容是否存在 //如果已经存在abc文件夹,则无法创建abc文件,文件夹与文件不能重名 f = new File("G:\\TestFolder\\abc"); f.createNewFile(); P.rintln("isFile:" + f.isFile()); P.rintln("isAbsolute:" + f.isAbsolute()); }3、获取File对象属性
下面是获取File对象的常见方法和一些要点说明:
public static void renameFile(){ File f1 = new File("G:\\TestFolder\\Test.java"); File f2 = new File("G:\\TestFolder\\Test_Temp.java"); P.rintln("rename:" + f1.renameTo(f2)); f1 = new File("G:\\TestFolder\\Test2.java"); f2 = new File("D:\\Test.java"); P.rintln("rename:" + f1.renameTo(f2)); //会将文件移动到D盘并改名 } public static void getFileInfo() throws IOException{ File f = new File("G:\\TestFolder\\Test.java"); Calendar cd = Calendar.getInstance(); cd.setTimeInMillis(f.lastModified()); //获取最后修改时间的毫秒值 P.rintln("文件名:" + f.getName()); P.rintln("文件路径:" + f.getPath()); //获取封装时的文件路径 P.rintln("父目录:" + f.getParent()); //File对象没有封装绝对路径,则返回null。如果相对路径中有上一层目录,则返回此目录 P.rintln("绝对路径名字符串:" + f.getAbsolutePath()); //使用相对路径创建的文件,可使用此方法获取绝对路径 P.rintln("绝对路径名形式:" + f.getAbsoluteFile()); //此方法返回的是File对象 P.rintln("最后修改时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cd.getTime())); //格式化输出最后修改时间 P.rintln("文件大小:" + f.length()); //返回的是字节数 }4、列出指定目录下指定文件
下面是测试代码及要点说明
//listFiles()列出指定目录下所有文件和文件夹,包含隐藏文件,返回的是File对象数组 public static void listFiles(){ File dir = new File("G:\\TestFolder"); File[] files = dir.listFiles(); for(File file : files){ P.rintln("文件名:" + file.getName() + " 文件大小:" + file.length()); } P.rintln("----------------当前目录下的所有java文件--------------------"); files = dir.listFiles(new FilenameFilter(){ //使用过滤器只列出java文件 public boolean accept(File dir, String name){ return name.endsWith(".java"); } }); for(File file : files){ P.rintln("文件名:" + file.getName() + " 文件大小:" + file.length()); } } //list()列出指定目录下所有文件和文件夹,包含隐藏文件,返回的是String数组 public static void list(){ File file = new File("G:\\TestFolder"); //调用list方法的File对象必须是封装了一个目录,该目录必须存在 String[] ss = file.list(); for(String name : ss){ P.rintln(name); } P.rintln("----------------当前目录下的所有java文件--------------------"); file = new File("G:\\TestFolder"); ss = file.list(new FilenameFilter(){ //使用过滤器只列出java文件 public boolean accept(File dir, String name){ // if(name.endsWith(".java") || name.endsWith(".txt")) // return true; // return false; return name.endsWith(".java"); } }); for(String name : ss){ P.rintln(name); } } public static void listRoots(){ File[] files = File.listRoots(); for(File file : files){ //列出电脑中所有盘符 P.rintln(file); P.rintln(file.length()); } }
5、列出目录下所有文件及文件夹包含子目录中的文件
下面是使用递推方法列出指定目录下所有文件及文件夹
public ArrayList<File> lists = new ArrayList<File>(); public static void main(String[] args) throws IOException { callListAll(); } //调用listFilesAll方法显示指定目录下所有文件及文件夹 public static void callListAll() throws FileNotFoundException{ PrintStream ps = new PrintStream("D:\\file.log"); System.setOut(ps); //将file.log文件作为标准输出 IO_08_FileObject io = new IO_08_FileObject(); File f = new File("F:\\Program Files\\apache-jmeter-2.10"); String str = "\\" + "\\"; io.listFilesAll(f); //将目录结构存放到list中 for(Iterator<File> i = io.lists.iterator(); i.hasNext();){ File file = i.next(); if(file.isDirectory()){ if(file.getAbsolutePath().equals("F:\\Program Files\\apache-jmeter-2.10")){ P.rintln(file.getAbsolutePath()); } else{ String[] strs = (file.getAbsolutePath()).split(str); P.rintln(fillLine(strs.length - 3) + file.getName()); } } else{ String[] strs = (file.getParent()).split(str); P.rintln(fillLine(strs.length - 2) + file.getName()); } // P.rintln(file.getAbsolutePath() + " --- " + (file.isFile() ? "文件" : "文件夹")); } } public static StringBuffer fillLine(int num){ if(num <= 0){ return new StringBuffer(""); } if(num == 1){ return new StringBuffer("|--"); } return fillLine(num - 1).insert(0, "| "); } //列出指定目录下文件或者文件夹,包含子目录的内容。也就是列出指定目录下所有内容 //函数自身调用自身,这种表现形式,或者变成手法,称为递归 //递归要注意:1、限定条件 2、要注意递归次数,尽量避免内存溢出 public void listFilesAll(File dir){ lists.add(dir); File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ listFilesAll(file); } else{ lists.add(file); } // lists.add(file); //这里最后才将文件夹add到list中,打印显示的时候不协调 } }file.log中显示效果
6、删除带内容的目录
public static void main(String[] args) throws IOException { File file = new File("G:\\TestFolder\\folder"); long start = System.currentTimeMillis(); removeFolder(file); long end = System.currentTimeMillis(); P.rintln("耗时:" + (end - start) + "毫秒"); } //删除一个带内容的目录。删除原理:在window中,删除目录从里面往外删除 //既然从里往外删除,就需要用到递归 public static void removeFolder(File dir){ File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ removeFolder(file); //若文件夹不为空,再次调用此方法先删除文件夹中的文件 } else{ file.delete(); //直接删除文件 } } dir.delete(); //将文件夹中的文件删除之后再删除文件夹 }7、创建Java文件列表
public static void main(String[] args) throws IOException { List<File> list = new ArrayList<File>(); fileToList(new File("G:\\Workspaces"), list); writeToFile(list, "D:\\java2.log"); } public static void writeToFile(List<File> list, String fileName){ BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter(fileName)); for(File file : list){ String path = file.getAbsolutePath(); bw.write(path); bw.newLine(); bw.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { if(bw != null){ try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void fileToList(File dir, List<File> list){ File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ fileToList(file, list); //如果还是目录的话就递归 } else{ if(file.getName().endsWith(".java")){ //如果是java文件就存储到list中 list.add(file); } } } }
-------
android培训、java培训、期待与您交流! ----------详细请查看:www.itheima.com
相关文章推荐
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- 黑马程序员--Java基础学习(IO流--File对象和Properties)第二十天
- 黑马程序员—19—java基础:有关File类的学习笔记和学习心得体会
- 黑马程序员_基础_IO流学习笔记_文本文件读取及复制、字符流的缓冲区和装饰设计模式
- 黑马程序员——Java基础——IO流笔记(File使用示例)
- 黑马程序员——Java基础——IO流笔记(FileReader使用示例)
- 黑马程序员--学习笔记--IO流File文件操作
- 黑马程序员—Java基础学习笔记之IO流
- 黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记
- 黑马程序员_java基础学习笔记08_IO流
- 黑马程序员--Java基础学习(其他对象和IO流)第十八天
- 黑马程序员_java基础学习笔记09_IO流
- 黑马程序员--面向对象基础知识学习笔记
- “黑马程序员”视频学习笔记之面向对象基础及调试问题
- [学习笔记]Java基础_IO(包含对象流序列化使用和RandomAccessFile 类的使用)
- 黑马程序员—4—Java基础: 面向对象继承学习笔记和学习心得体会
- 黑马程序员_基础_IO流学习笔记_IO流基础
- 黑马程序员_基础_IO流学习笔记_字节流的学习
- 黑马程序员 JAVA学习笔记——IO流基础篇
- 黑马程序员_java基础学习IO流学习笔记