Java开发之File类
2015-12-09 15:24
323 查看
File类
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。【案例 】创建一个文件
import java.io.*; class hello{ public static void main(String[] args) { File f=new File("D:\\hello.txt"); try{ f.createNewFile(); }catch (Exception e) { e.printStackTrace(); } } }
【案例2】File类的两个常量
import java.io.*; class hello{ public static void main(String[] args) { System.out.println(File.separator); System.out.println(File.pathSeparator); } }
此处多说几句:有些同学可能认为,我直接在windows下使用\进行分割不行吗?当然是可以的。但是在linux下就不是\了。所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧,其实也多写不了几行。
【案例3】File类中的常量改写案例1的代码:
import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); try{ f.createNewFile(); }catch (Exception e) { e.printStackTrace(); } } }
【案例4】删除一个文件(或者文件夹)
import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); if(f.exists()){ f.delete(); }else{ System.out.println("文件不存在"); } } }
【案例5】创建一个文件夹
/** * 创建一个文件夹 * */ import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello"; File f=new File(fileName); f.mkdir(); } }
【案例6】列出目录下的所有文件
/** * 使用list列出指定目录的全部文件 * */ import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); String[] str=f.list(); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } }
注意使用list返回的是String数组,。而且列出的不是完整路径,如果想列出完整路径的话,需要使用listFiles.它返回的是File的数组。
【案例7】列出指定目录的全部文件(包括隐藏文件):
/** * 使用listFiles列出指定目录的全部文件 * listFiles输出的是完整路径 * */ import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); File[] str=f.listFiles(); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } }
【案例8】判断一个指定的路径是否为目录
/** * 使用isDirectory判断一个指定的路径是否为目录 * */ import java.io.*; class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); if(f.isDirectory()){ System.out.println("YES"); }else{ System.out.println("NO"); } } }
【案例9】递归搜索指定目录的全部内容,包括文件和文件夹
import java.io.File; public class Hello { /** * 列出指定目录的全部内容 */ public static void main(String[] args) { String fileName = "D:" + File.separator; File f = new File(fileName); print(f); } private static void print(File f) { if (f != null) { if (f.isDirectory()) { File[] fileArray = f.listFiles(); if (fileArray != null) { for (int i = 0; i < fileArray.length; i++) { print(fileArray[i]); } } else { System.out.println(f); } } } } }
10.RandomAccessFile类
该对象并不是流体系中的一员,其封装了字节流,同时还封装了一个缓冲区(字符数组),通过内部的指针来操作字符数组中的数据。该对象特点:
该对象只能操作文件,所以构造函数接收两种类型的参数:a.字符串文件路径;b.File对象。
该对象既可以对文件进行读操作,也能进行写操作,在进行对象实例化时可指定操作模式(r,rw)
注意:该对象在实例化时,如果要操作的文件不存在,会自动创建;如果文件存在,写数据未指定位置,会从头开始写,即覆盖原有的内容。可以用于多线程下载或多个线程同时写数据到文件。
【案例】使用RandomAccessFile写入文件
/** * 使用RandomAccessFile写入文件 * */ import java.io.*; class hello{ public static void main(String[]args) throws IOException { StringfileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); RandomAccessFile demo=newRandomAccessFile(f,"rw"); demo.writeBytes("asdsad"); demo.writeInt(12); demo.writeBoolean(true); demo.writeChar('A'); demo.writeFloat(1.21f); demo.writeDouble(12.123); demo.close(); }
【案例 】乱码的产生
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * 乱码的产生 * */ public class CharSetDemo2{ public static void main(String[] args) throws IOException{ File file = new File("d:" + File.separator + "hello.txt"); OutputStream out = new FileOutputStream(file); byte[] bytes = "你好".getBytes("ISO8859-1"); out.write(bytes); out.close(); }//输出结果为乱码,系统默认编码为GBK,而此处编码为ISO8859-1
【案例 】序列化一个对象 – ObjectOutputStream
import java.io.Serializable; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; /** * 实现具有序列化能力的类 * */ public class Person implements Serializable{ public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } @Override public String toString(){ return "姓名:" +name + " 年龄:" +age; } private String name; private int age; } /** * 示范ObjectOutputStream * */ public class ObjectOutputStreamDemo{ public static voidmain(String[] args) throws IOException{ File file = newFile("d:" + File.separator + "hello.txt"); ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream( file)); oos.writeObject(newPerson("rollen", 20)); oos.close(); } }
【案例 】反序列化—ObjectInputStream
import java.io.File; import java.io.FileInputStream; import java.io.ObjectInputStream; /** * ObjectInputStream示范 * */ public class ObjectInputStreamDemo{ public static voidmain(String[] args) throws Exception{ File file = new File("d:" +File.separator + "hello.txt"); ObjectInputStreaminput = new ObjectInputStream(new FileInputStream( file)); Object obj =input.readObject(); input.close(); System.out.println(obj); } }
相关文章推荐
- JAVA代码规范
- WebService之Axis2快速入门: Spring与axis整合发布为WebService
- Java星期的复选运算
- java 压缩和解压lzo文件
- java 当前时间+1
- 开发中模拟器连接eclipse的一些小问题
- Java中equals和==的区别
- [转]eclipse快捷键
- JAVA反射
- 实例分析Java中public static void main(String args[])是什么意思
- HibernateTemplate 源码
- RxJava学习资源
- maven引入多个spring jar包中存在同名文件的问题
- 用到的资料链接
- Struts2框架的搭建以及架构总结
- SpringMVC中@ResponseBody的相关注意点
- SpringMVC中@ResponseBody的相关注意点
- 转换webp格式图片,java.io.IOException: Cannot run program "dwebp": error=2, No such file or directory
- 在 NetBeans 中开发一般 Java 应用程序时配置 Allatori 进行代码混淆
- Spring 各jar包作用