java学习第二十天之创建删除文件、文件夹、写入文件
2017-03-27 15:52
615 查看
删除文件、文件夹
递归
调用文件接口
获取文件数据
创建文件、文件夹、查看是否隐藏
过滤文件名称
输出流写入文件
获取文件夹下的内容
输入输出流
过滤器
调用system方法
package cn.myio.demo; import java.io.File; public class DeleteDirDemo { /** * @param 删除一个带内容的文件夹,必须从里往外删 */ public static void main(String[] args) { File dir = new File("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo\\abc"); System.out.println(dir.delete()); delDir(dir); } /** * @param dir */ private static void delDir(File dir) { // 1、列出当前目录下的文件以及文件夹 File[] files=dir.listFiles(); // 2、对该数组进行遍历 for (File file : files) { if(file.isDirectory()){ delDir(file); }else { System.out.println(file+"已删除"+file.delete()); } } System.out.println(dir+"已删除"+dir.delete()); } }
递归
package cn.myio.demo; public class DiGuiDemo { /** * @param 递归:函数自身调用自身。函数内部又使用到了该函数的功能 * 什么时候使用? * 功能被重复使用,但是每次该功能使用参与预算的数据不同是,可以考虑递归方式解决 * * 使用时,一定要定义条件 * 注意递归次数过多,会出现内存溢出 */ public static void main(String[] args) { int sum = getSum(3); System.out.println("sum"+":\t"+sum); } /** * @param i * @return */ private static int getSum(int i) { if(i==1) return i; return i+getSum(i-1); } public void show() { show(); } }
调用文件接口
package cn.myio.demo; import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.util.jar.Attributes.Name; public class FileBySuffix implements FilenameFilter{ private String suffix; public FileBySuffix(String suffix) { super(); this.suffix=suffix; } // Name被遍历目录中的文件夹或者文件的名称 @Override public boolean accept(File dir, String name) { return name.endsWith(suffix); } }
获取文件数据
package cn.myio.demo; import java.io.File; public class FileDemo { /** * @param args * Flie类 常见方法 * 1、名字 获取名称 * String getName(); * 2、大小 获取大小 * long length(); * 3、获取类型 * 没有 * 4、获取所在目录 * String space(); */ public static void main(String[] args) { File file=new File("c:\\1.txt"); String file_name=file.getName();//获取名称 System.out.println(file_name); long len=file.length();//获取大小 System.out.println(len); String space=file.getPath(); System.out.println(space); } }
创建文件、文件夹、查看是否隐藏
package cn.myio.demo; import java.io.File; import java.io.IOException; import java.sql.Date; import java.text.DateFormat; public class FileDemo1 { /** * @param args * File 方法 * 1、获取文件的绝对路径 * String getAbsolutePath(); * 2、获取文件的路径 * String getPath(); * 3、获取文件的最后一次修改时间,要求是X年X月X日。时间 * String lastModified(); * 4、文件是否是隐藏的 * boolean isHidden(); * 5、发现File对象封装的文件或者 文件夹是可以存在的也可以是不存在的 * 那么不存在的可否用file的功能创建按呢? * 创建功能 * boolean createNewFile(); * 删除功能 * boolean delete(); * 6、一个File对象封装的文件或者文件夹到底是否存在内容? * 是否存在 boolean exists(); *7、getFreeSpace()方法是什么意思?用Demo验证。getTotalSpace() getUsableSpace() * @throws IOException */ public static void main(String[] args) throws IOException { File file=new File("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo\\2.txt"); // methodDemo1(file); // methodDemo2(file); File file2=new File("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo\\abc"); methodDemo3(file2); methodDemo4(); } /** * */ private static void methodDemo4() { File file =new File("C:\\"); System.out.println(file.getFreeSpace());//可用空间的大小 } /** * @param file2 */ private static void methodDemo3(File file) { // 创建文件夹 boolean dir=file.mkdir(); System.out.println(dir); boolean exist=file.exists(); System.out.println(exist); boolean del=file.delete();//删除文件夹时,必须保证该文件夹没有内容。有内容必须先把内容删除,才可以删除当前文件 System.out.println(del); // 3、创建多级目录 boolean dirs=file.mkdirs(); System.out.println(dirs); // 4、判断是不是文件、是不是文件夹 System.out.println("file:"+file.isFile()); System.out.println("dir:"+file.isDirectory()); } /** * @param file * @throws IOException */ private static void methodDemo2(File file) throws IOException { // 1、创建文件夹 boolean b=file.createNewFile();//创建文件 如果文件存在。则不创建返回false 不存在就创建 返回true System.out.println(b); // 2、删除 boolean d=file.delete(); System.out.println("delete:"+d); } /** * @param file */ private static void methodDemo1(File file) { String path=file.getAbsolutePath();//获取文件的绝对路径,即使封装的是相对的,获取的也是绝对的 System.out.println(path);//获取的是file对象的封装路径,封装的是什么,获取的的就是什么 String path1=file.getPath(); System.out.println(path1); long time=file.lastModified();//现在的Unix时间戳(Unix timestamp) Date date=new Date(time);//日期转换 String str_date=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG).format(date); System.out.println(str_date); boolean b=file.isHidden();//判断文件是否隐藏 System.out.println("isHiddden"+b); } }
过滤文件名称
package cn.myio.demo; import java.io.File; import java.io.FilenameFilter; public class FileDemo3 { /** * @param args */ public static void main(String[] args) { // 获取指定文件夹中的所有文件和文件夹的名称。能不能只获取.java文件呢? File file=new File("C:\\"); String[] names=file.list();//列出当前目录下的所有文件和文件夹名称,包含隐藏文件 //只能获取名称,不能获取大小 /*for(String name:names){ System.out.println(name); }*/ /* //同上面一种写法 if(names!=null){ for(String name:names){ System.out.println(name); } } */ File[] files=file.listFiles(); /*for(File f:files){ System.out.println(f); }*/ //获取指定目录下.java文件 File file2=new File("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo"); // 传入一个过滤器 // String[] name_filter=file2.list(new FileBySuffix(".class"));//过滤后缀名的过滤器 FilenameFilter filter=new FileBySuffix(".java");//过滤后缀名的过滤器 filter=new FilerByContain("Demo"); String[] names2=file2.list(filter); for(String name:names2){ // if(name.endsWith(".java"))//相当于过滤 System.out.println(name); } } }
package cn.myio.demo; import java.io.File; import java.io.FileFilter; public class FileFilterDemo { /** * @param 文件过滤器 FileFilter */ public static void main(String[] args) { File dir=new File("C:\\"); // 传递过滤器 FileFilter filter=new FilerByFile(); File[] files=dir.listFiles(filter); for (File file : files) { System.out.println(file); } } }
输出流写入文件
package cn.myio.demo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileOutPutStramDemo { /** * @param 将数据包写到文件当中 * 使用字节输出流 * FileOutputStream * @throws IOException */ public static void main(String[] args) throws IOException { File file=new File("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo\\tempfile"); /* 1、创建字节输出流对象,用于从奥做文件,在对象初始化时,必须明确数据存储的目的地 输出流所关联的目的地,如果不存在,会自动创建 */ FileOutputStream fileOutputStream=new FileOutputStream("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo3.txt"); // 调用输出流的写功能 String string="3sdsfsf"; byte[] buf=string.getBytes(); fileOutputStream.write(buf); fileOutputStream.write("我是大灰狼".getBytes()); // 3、释放资源 fileOutputStream.close(); } }
package cn.myio.demo; import java.io.File; import java.io.FilenameFilter; public class FilerByContain implements FilenameFilter { private String content; /** * @param content */ public FilerByContain(String content) { super(); this.content = content; } @Override public boolean accept(File dir, String name) { return name.contains(content); } }
package cn.myio.demo; import java.io.File; import java.io.FileFilter; public class FilerByFile implements FileFilter { @Override public boolean accept(File pathname) { return pathname.isFile(); } /** * @param args */ }
package cn.myio.demo; import java.io.File; import java.io.FileFilter; /** * @author john5 * */ public class FilterBySuffix implements FileFilter { private String suffix; @Override public boolean accept(File pathname) { return pathname.getName().endsWith(suffix); } /** * @param suffix */ public FilterBySuffix(String suffix) { super(); this.suffix = suffix; } }
获取文件夹下的内容
package cn.myio.demo; import java.io.File; public class GetAllFile { /** * @param args */ public static void main(String[] args) { /* 遍历指定目录下的内容(包含子目录中内容) 递归:函数自身调用自身,函数内部又使用到了该函数的功能 */ File dir=new File("D:\\java\\workspace"); getAllfiles(dir); } public static void getAllfiles(File dir) { //获取该目录的文件对象数组 File[] files=dir.listFiles(); // 对数组进行遍历 for (File file : files) { if(file.isDirectory()){ getAllfiles(file); }else { System.out.println(file); } System.out.println(file); } } }
输入输出流
package cn.myio.demo; import java.io.File; public class IoDemo { /** * @param args * * /** * @param * 流按操作数据分为两种:字节流与字符流 * 流按流向分为:输入流(读)输出流(写) * 字节流的抽象基类:InputSream OutputStream * 字符流的抽象基类 * * * IO流用来处理设备之间的数据传输 Java对数据的操作是通过 流(系统资源) 的方式的 Java用于操作流的对象都在java.io包中 Io:用于处理设备上的数据的技术。设备:内存,硬盘。光盘 流:系统资源,windows系统本身就可任意操作设备,各种语言只是使用系统平台的这个资源 并对外提供了各种语言自己的操作功能,这些功能最终调用的是系统资源 使用完资源一定要记住:释放 设备上数据最常见的存储表现形式文件file 先学习一下文件的基本操作 描述文件或者文件夹的类是file */ private static final String FILE_SAPARATOR=System.getProperty("file.separator"); public static void main(String[] args) { // 将具体的路径封装成了File对象。可以封装存在的文件或目录,也可以封装不存在的文件或目录 File file=new File("C:\\1.txt"); //File(String parent,String child) File file1=new File("C:\\","1.txt"); File dir=new File("c:\\"); File file2=new File(dir,"1.txt"); File file3=new File("c:"+FILE_SAPARATOR+"abc"+FILE_SAPARATOR+"1.txt"); File file4=new File("C:\\abc\\1.txt"); System.out.println(file3); } }
过滤器
package cn.myio.demo; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.List; public class IODemo2 { /** * @param * 获取一个想要的指定文件的集合 获取wokespace下(包含子目录)的所有的.java的文件对象,并存储到集合中 * 思路: * 1、既然包含子集合,就需要递归 * 2、在递归过程中需要过滤器 * 3、满足条件,都添加到集合中 * * */ /** * 定义一个获取指定条件的文件的集合 * *多级目录下都要用到相同的集合和过滤器 那么不要在递归方法中定义,而是不断地进行传递 * @param dir 需要遍历的目录 * @param list 用于存储符合条件的File对象 * @param filter 接受制定的过滤条件 * */ public static void main(String[] args) { File dir=new File("D:\\java\\workspace"); List<File> list=fileList(dir); for (File file : list) { System.out.println(file); } } public static void getFileList(File dir,List<File> list,FileFilter filter) { // 1、通过listFiles放啊,获取dir当前下的所有的文件和文件夹对象 File[] files=dir.listFiles(); // 2、遍历该数组 for (File file : files) { // 3、判断是否是文件夹,如果是,递归。如果不是,那就是文件夹,就需要对文件进行过滤 if(file.isDirectory()){ getFileList(dir, list, filter); }else { // 4、通过过滤器对文件进行过滤 if(filter.accept(file)){ list.add(file); } } } } public static List<File> fileList(File dir) { // 1、定义集合 List<File> list=new ArrayList<File>(); // 2、定义过滤器 /*FileFilter fileFilter=new FileFilter() { @Override public boolean accept(File pathname) { return pathname; } };*/ FileFilter filter=new FilterBySuffix(".java"); getFileList(dir, list, filter); return list; } }
调用system方法
package cn.myio.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class IOExceptionDemo { /** * @param args */ static final String Line_SEPARATOR=System.getProperty("line.separator"); public static void main(String[] args) throws IOException { FileOutputStream fileOutputStream=null; try { // 传入true 续写 fileOutputStream=new FileOutputStream("D:\\java\\workspace\\Stage2\\src\\cn\\myio\\demo3.txt",true); fileOutputStream.write("\r\n我是大灰狼".getBytes()); fileOutputStream.write(Line_SEPARATOR.getBytes()); } catch (IOException e) { }finally { if(fileOutputStream!=null){//关闭资源前必须判断 try { fileOutputStream.close(); } catch (IOException e) { throw new RuntimeException("关闭失败"+e); } } } } }
相关文章推荐
- Java学习之创建和删除文件夹&文件(转)
- 学习Linux二(创建、删除文件和文件夹命令)
- Ubuntu学习日记--Lesson2:创建、重命名、删除文件及文件夹,强制清空回收站方法
- 学习Linux二(创建、删除文件和文件夹命令)
- java创建文件夹,文件;删除文件夹,文件
- linux学习入门3——linux文件基本操作(linuxcast.net)(复制、移动、重命名、创建、删除文件及文件夹)
- 学习Linux二(创建、删除文件和文件夹命令)
- Java笔记之io——递归创建与删除多层文件夹,字符流实现文件复制
- 今天看到了一个用java实现复制,剪切,删除文件或文件夹的示例,感觉不错,欢迎学习(带详细注释)
- java 文件,文件夹的创建和删除
- java文件创建、删除、读取、写入操作大全
- java 对文件的删除、剪切、移动和创建文件夹操作
- JAVA基础初探(十二)Map接口及其常用实现类(HashMap)、File类详解(概述、创建、删除、重命名、文件属性读取/设置、遍历文件夹)
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- java_对文件的删除、剪切、移动和创建文件夹操作
- java创建删除文件及文件夹大全
- C#文件夹及文件操作(检查 创建 读取 写入 修改 删除)
- Android SD卡创建文件夹/文件 SD卡写入内容 SD卡删除文件 计算SD卡文件大小,Android6.0+权限
- java中File文件的创建,删除,复制,移动,以及目录文件的删除等等,主要是文件及文件夹的操作
- Java 基础【12】 文件(文件夹) 创建和删除