08、File类详解

一、File类

1.1、File解析

File类可以用来将文件或文件夹封装成对象同时也可以作为参数传递给流的构造函数,方便对文件的读写操作。

(1)File f1 = new File("a.txt");//将a.txt封装成file对象。可以将已有的和未出现的文件或者文件夹封装成对象。

(2)File f2 = new File("c:\\abc","b.txt");//将目录和文件分成两个参数进行传递。

(3)File d = new File("c:\\abc");//将绝对路径封装成对象。
   File f3 = new File(d,"c.txt");//再将对象当做参数传递。

总结:其实这三种创建方式都是一回事,只是写法不同,便于针对不同的问题进行解决。
注:目录分隔符:\\可以用File.separator。 跨平台的分隔符。是一个静态的字段。

1、常用方法:

1.创建
boolean createNewFile()://在指定位置创建文件,如果该文件以及存在则不创建,返回false。
boolean mkdir()://创建一级文件夹,文件不存在返回true,文件已存在返回false.
boolean mkdirs()://创建多级文件夹。
2.删除
boolean delete()://删除失败返回false。
void deleteOnExit()://在程序退出时自动删除指定文件。
3.判断
boolean exists()://文件是否存在。
boolean isFile()://判断路径名表示的文件是否是一个标准文件。
boolean isDirectory()://判断路径名表示的文件是否是一个目录。
boolean isHidden()://判断指定文件是否是一个隐藏文件。
boolean isAbsolute()://判断文件路径是否为绝对路径。
boolean canExecute()://判断文件是否是可执行文件。
boolean canRead()://判断文件是否可以被读取。
boolean canWrite()://判断文件是否可以被修改。
4.获取
String getName()://获取不带路径的文件名,
String getPath()://获取相对路径。
String getParent()://该方法返回的是绝对路径中的文件父目录。如果获取的是相对路径,返回null。如果相对路径有上一层目录,那么该目录就是返回结果。
String getAbsolutePath()://获取绝对路径。
long lastModified()://获取文件最后一次修改时间。
long length()://获取文件长度。(也就是获取文件夹下文件的个数。)
String[] list()://获取指定目录下的所有文件名,包含隐藏文件。调用List方法的file对象必须是封装了一个目录。该目录必须存在。
static File[] listRoots()://获取所有根目录。注意静态和返回值是数组。
5.修改
boolean renameTo(File dest):重命名。
6.过滤
String[] list(FilenameFilter filter)://传入一个FilenameFilter接口类型的引用,返回一个字符串形式的文件名。(过滤器)
File[] listFiles()://返回一个文件对象的数组,拿到的只有文件对象,没有目录对象。//注意:返回的是对象,可以通过对象调用getName()方法和length()方法。

获取以指定名称结尾的文件。(多练习,要记住)

File f = new File("D:\\java\\javaDemo");
String[] s = f.list(new FilenameFilter() {//通过一个匿名内部类,重写FilenameFilter接口中的accept方法。
    public boolean accept(File dir, String name) {
        return name.endsWith(".java");//boolean endsWith:判断字符是否以指定后缀结尾。
    }
});
System.out.println("len:"+s.length);
for (String name:s ) {
    System.out.println(name);
}

通过上面的方法,让输出的目录带层次。递归调用

public static void showDir(File dir) {
    File[] files = dir.listFiles();
    for (int x=0;x<files.length;x++ ) {
        if(files[x].isDirectory())//判断是否是目录,是目录递归继续列出目录下的内容。
            showDir(files[x]);
        else
            System.out.println(files[x]);
    }
}

2、递归运算详细流程

public void toBin(int num){
    if(num > 0){
        toBin(num/2);
        System.out.println(num%2);
    }
}

这里假设num = 6;我们对递归运算流程进行分析。
第一次

public void toBin(6){
    if(6 > 0){
        toBin(6/2);-->开始递归执行第二次
        System.out.println(6%2);
    }
}

第二次

public void toBin(3){
    if(3 > 0){
        toBin(3/2);-->开始递归执行第三次
        System.out.println(3%2);
    }
}

第三次

public void toBin(1){
    if(1 > 0){
        toBin(1/2);-->开始递归执行第四次
        System.out.println(1%2);
    }
}

第四次

public void toBin(0){
    if(0 > 0){        -->条件不满足,程序结束
        toBin(0/2);
        System.out.println(0%2);
    }
}
//第四次判断不满足程序就结束了,当第四次结束后意味着第三次结束了执行输出为1,第三次结束了意味着第二次结束了执行输出为1,
//第二次结束了意味着第一次结束了,执行输出0,这里就得出了6的二进制是110。

1.2、编码表

字符流的出现为了方便操作字符,更重要的是加入了编码转换。通过子类转换流来完成:InputStreamReader 和 OutputStreamWriter。

编码表由来:

  计算机只能识别二进制数据,早起由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。

常见的编码表

  • Ascii:美国标准信息交换码,用一个字节的7位可以表示。
  • ISO8859-1:拉丁码表。欧洲码表,用一个字节的8位表示。
  • GBK2312:中国的中文编码表。
  • GBK:中国的中文编码表升级,融合了更多的中文文字符号。
  • Unicode:国际标准码,融合了多种文字,所有文字都用两个字节来表示,Java语言使用的就是unicode。
  • UTF-8:最多用三个字节来表示一个字符。

编码:字符串变成字节数组。

String-->byte[]:
str.getBytes();
str.getBytes(String charsetName)

解码:字节数组变成字符串。

byte[]-->String:
new String(byte[])
new String(byte[],String charsetName)

注:当编码用的是GBK,而解码用的iso8859-1,这样解析出来会是乱码,我们可以通过iso8859-1再对其进行编码,然后通过GBK解码。

String s = "你好";
byte[] b1 = s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
String s1 = new String(b1,"iso8859-1");
System.out.println("s1="+s1);
//对s进行重新编码。
byte[] b2 = s1.getBytes("iso8859-1");
String s2 = new String(b2,"GBK");
System.out.println("s2="+s2);

############################################################

时间: 2024-11-10 01:35:53

08、File类详解的相关文章

File类详解

一.File类: File类时io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等. File类的对象主要用来获取文本的一些信息,如文件所在的目录.文件的长度.文件的读取权限等. 1.文件的创建:目录(文件夹)的创建 File(String pathname):在此File的构造方法中填入一个String类型的路径名:实例如下: String s="d:\\aaa.txt"; File f=ne

JavaIO(01)File类详解

File类 file类中的主要方法和变量 常量: 表示路径的分割符:(windows) 作用:根据java可移植性的特点,编写路径一定要符合本地操作系统要求的分割符: public static final String separator public static final String pathSeparator package cn.itcast; import java.io.File; public class DemoFile02 { public static void mai

javaIO—File类详解

先列出APi,然后讲解File类的基本知识及实例. java.io 类 File java.lang.Object java.io.File 所有已实现的接口: Serializable, Comparable<File> public class File extends Object implements Serializable, Comparable<File> 文件和目录路径名的抽象表示形式. 用户界面和操作系统使用与系统相关的路径名字符串来命名文件和目录.此类呈现分层路

【56】java本地文件File类详解

1.java类的介绍 public class File extends Object implements Serializable, Comparable<File> 文件和目录路径名的抽象表示形式. File既可以表示文件也可以表示目录. 用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录.此类呈现分层路径名的一个抽象的.与系统无关的视图. 2.构造方法 File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符

java中File类详解

构造函数 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(String pathname)         File f1 =new File("c:\\abc\\1.txt");         //File(String parent,String child)         File f2 =new File("c:\\abc&qu

QAction类详解:

先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action that can be inserted into widgets. In applications many common commands can be invoked via menus, toolbar buttons, and keyboard shortcuts. Since the user

URLConnection类详解

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3753224.html URLConnection概述 URLConnection是一个抽象类,表示指向URL指定资源的活动连接. URLConnection类本身依赖于Socket类实现网络连接.一般认为,URLConnection类提供了比Socket类更易于使用.更高级的网络连接抽象.但实际上,大多数程序员都会忽略它

JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表

一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public class HelloAction { public String hello(){ System.out.println("hello world!"); return "success"; } } 3.书写src/struts.xml (记得加上dtd约束) &l

JDK中Unsafe类详解

Java中Unsafe类详解 在openjdk8下看Unsafe源码 http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/sun/misc/Unsafe.java http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/misc/Unsafe.java Java并发编程之LockSuppor