IO / XML

一、File类

1.定义/概念

    Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件。File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文件或目录进行各种操作。File类在java.io包下,与系统特定输入输出的相关的类都在此包下。

2.File类构造方法

    构造一个File类的实例,并不是创建这个目录或文件,而是创建该路径(目录或文件)的一个抽象,他可能真实存在,也可能不存在

      (1)File(File parent,String child)
根据parent 抽象路径名个cjild路径名字字符串创建一个新的File实例 (2) File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例 (3)File(URI uri)
通过将给定的URI类对象转化为一个抽象路径名来创建一个新的File类实例

注意:1.在创建File类的实例的时候Java语言的一个显著特点是“”一处编译,处处运行“”,所以在使用File类的创建的时候需要保证这个File类也是跨平台的。但是不同的操作系统对文件路径的设定各有不同的规定在

**Windows系统写的文件路径是 C:\com\bd\Test.java 但是在Linux和Unix操作系统下文件的路径可能是/home/bd/Test.java **

3.File类提供了一些静态属性,通过这些静态属性,可以获得Java虚拟机所在操作系统的分隔符相关信息

        (1) File.pathSeparator   与系统有关的路径分隔符,它贝表示为一个字符串
(2)File.pathSeparatorChar 与系统有关的路径分隔符,它贝表示为一个字符
(3) File.separator 与系统有关的默认名称分隔符,它贝表示为一个字符串
(4)File.SeparatorChar 与系统有关的默认名称分隔符,它贝表示为一个字符

举例

package com.lanqiao.demo1;

import java.io.File;

public class TestFileSeparator {
public static void main(String[] args) {
System.out.println("PATH分隔符:"+File.pathSeparator);//显示PATH的分隔符 " : "
System.out.println("路径分隔符:"+File.separator); //显示路径分隔符: " / "
}
}

4.File类使用

package com.lanqiao.demo1;

import java.io.File;
import java.io.IOException; public class TestFile {
public static void main(String[] args) throws Exception {
System.out.println("文件系统根目录");
for(File root : File.listRoots()){
//format方法使用指定格式化字符串输出
System.out.format("%s",root);
} System.out.println();
showFile();
} public static void showFile() throws Exception {
//创建文件对象file,注意使用转义字符
File f = new File("C:\\com\\bd\\Tets.java");
File f1 = new File("C:\\com\\bd\\Tets1.java"); //当文件不存在时,创建一个新的空文件
f1.createNewFile();//在这里需要抛出异常
//指定输出格式
System.out.format("输出字符串:%s%n",f);
System.out.format("判断File类对象是否存在:%b%n",f.exists()); //%tc,输出日期和时间 %b 是布尔类型
System.out.format("获取File类对象最后修改时间:%tc %n", f.lastModified());
System.out.format("判断File类对象是否是文件:%b %n",f.isFile());
System.out.format("判断File类对象是否是目录:%b%n",f.isDirectory());
System.out.format("判断File对象是否有隐藏的属性 :%b%n",f.isHidden());
System.out.format("判断File对象是否是可读:%b%n",f.canRead());
System.out.format("判断File对象是否可写:%b%n",f.canWrite());
System.out.format("判断File对象是否可执行:%b%n",f.canExecute());
System.out.format("判断File对象是否是绝对路径:%b%n",f.isAbsolute());
System.out.format("获取File对象的长度:%d%n",f.length());
System.out.format("获取File对象的路径:%s%n",f.getPath());
System.out.format("获取File对象的绝对路径:%s%n",f.getPath());
System.out.format("获取File对象父目录的路径:%s%n",f.getParent()); }
}

5.静态导入

静态导入的特性:用来导入指定累的某个静态属性或方法或全部静态属性或方法,静态导入使用import static

静态导入前


package com.lanqiao.demo1; public class TestStatic {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.toHexString(12));
}
}

静态导入后

package com.lanqiao.demo1;
import static java.lang.System.out;//标记
import static java.lang.Integer.*;//标记 /**
* 静态导入后的代码
*
* @author Administrator
*
*/
public class TestStatic2 {
public static void main(String[] args) {
out.println(MAX_VALUE);
} }

通过对比分析的:使用静态导入省略了System和Integer的书写,编写代码相对很简单,在使用静态导入的时候需要注意以下几点:

    1.虽然在语言表述上说的是静态导入,打奶代码中必须写import static
2.防止静态导入冲突。例如:同时对 Integer 和 Long 类执行了静态导入,引用MAX_VALUE属性将导致一个编译器错误,编译器不知道使用哪个 M AX _VALUE
3.虽然静态导入让代码编写相对简单,但毕竟没有完整的写出静态成员所属类名,程序的可读性降低。

6.获取目录和文件

File类提供了一些方法,用来返回指定路径下的目录和文件。

String[]   list()    返回字符串数组,这些字符串指定抽象路径名表示的目录中的文件个目录。

String[] list(Filename filter)    返回一个字符串数组,这些字符串指定此抽象名表示的目录中满足指定过滤器的文件和目录

File[]     listFiles()     返回一个抽象路径名数组,这些路径名表示次抽象路径名表示的文件和目录

File[]  listFiles(FilenameFilter  fileter)       返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录

7.字符流和字节流

I/O流

在Java中,文件的输入输出是通过流来实现的,用来实现程序或进程间的通信,或读写外围设备、外部文件等。

一个流必须有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至是Intenet上某个URL。对于流而言,不用关心数据是如何传输的,只需要向源端输入数据,从目的端接收数据即可.

如何理解输入输出呢?

简单地说:你听别人说话就是输入,你开口跟别人说话就是输出。在计算机的世界中,输入Input 和输出Output  都是针对计算机的内存而言。比如:读取计算机硬盘上的一个文件对于内存而言就是输入;向控制台打印输出一句话就是出书。所以将这类方法叫做输入输出即    I / O
流是对IO操作的形象描述,信息从一处转移到另一处就叫做  I/O  流

输入流的抽象表示形式是接口InputStream;输出流的抽象表示形式是接口OutputStream 

System.out.println()  是典型的输出流,向控制台输出信息
new Scanner(System.in) 是典型的输入流duq控台输入的信息 它们两者是InputStream 和OutputStream 的实例对象

字符流和字节流的区别

按照处理数据的单位,流可以分为字节流和字符流。字节流的处理的单位是字节,通常用来处理二进制文件,如文件,图片文件。而字符流的处理单位是字符,因为Java采用Unicode 编码   Java字符流处理的即Unicode字符,所以在操作汉字、国际化方面字符流具有优势

8.字节流

所有的字节流类都

2017.12.20 Java中的 IO/XML学习总结 File类详细的更多相关文章

  1. 第12讲-Java中的IO操作及对象的序列化与反序列化

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...

  2. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  3. 2017.12.13 Java中是怎样通过类名,创建一个这个类的数组

    先在类方法中定义数组的方法: public int[] method6(int[] arr){ for(int i = 0; i<arr.length;i++){ arr[i] = (int)( ...

  4. java中的IO处理和使用,API详细介绍(一)

    写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为 ...

  5. Java中的io流学习(了解四大基类和基本步骤)

    Java中io流四大基类及io流操作四大基本步骤 io流:(input/output)即输入输出流.面向对象的思想之一是面向接口编程,面向父类编程,也就是多态.所以学好基类(父类)很重要. 分类 按处 ...

  6. Java中的IO、NIO、File、BIO、AIO详解

    java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?         Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包 ...

  7. IO流学习之File类

    File类 Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目录.就是把文件和目录转换成对象,读取到内 ...

  8. 2017.12.9 Java中的排序---冒泡排序、快速排序、选择排序

    //冒泡排序 public class demo{ public static void main(String[] args) { int[] sum={2,9,10,1,5,88}; System ...

  9. java中的IO处理和使用,API详细介绍(二)

    字符流 [向文件中写入数据] 现在我们使用字符流 /** * 字符流 * 写入数据 * */ import java.io.*; class hello{ public static void mai ...

随机推荐

  1. 面试d090305知识点准备01

    1.1  类成员访问[jL1] 权限 1.2  写个双线程,计算50内的奇偶数 1.3  打印等腰三角形 1.4  运算符优先级 括号,非正负和自增减(右到左),乘除加减,等于不等于,逻辑与和或,然后 ...

  2. thinkphp5.1控制器初始化函数initialize与构造函数__construct区别

    构造函数中子类的构造方法会覆盖父类的构造方法,如果要继承父类的构造方法可以加入parent::__construct(); 例子: //另一种方法,使用构造函数初始化 public function ...

  3. EcmaScript内置对象的属性与方法

  4. selenium框架安装及webdriver安装

    本文介绍的是selenium安装及webdriver安装.小实例 1.selenium介绍 selenium是一个用于web应用程序测试的工具. Selenium测试直接运行在浏览器,就向真正的用户操 ...

  5. POJ - 3461 (kmp)

    题目链接:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  6. Java ping 主机 端口

    22:04:08.002 [main] INFO Ping - 目标地址 192.168.1.107 是否可到达:true 22:04:08.006 [main] INFO Ping - 执行命令 p ...

  7. python 多继承(新式类) 四

    转载自:http://blog.sina.com.cn/s/blog_45ac0d0a01018488.html mro即method resolution order,主要用于在多继承时判断调的属性 ...

  8. javascript 获取dom书的下一个节点。

    利用javascript 写一个在页面点击加减按钮实现数字的累加.. 简略的html大概如此.看得懂就好不要在意这些细节啊 <input type="button" valu ...

  9. JAVA中数组介绍

    一.数组: 数组指一组数据的集合,数组中的每个数据被称作元素. 二.数组定义: 数组类型[] 数组名 = new 数组类型[元素个数或数组长度]: (注意:等号前面的[]里面不能写任何东西) 也可以以 ...

  10. agc015E - Mr.Aoki Incubator(dp)

    题意 题目链接 平面上有$n$个点,每个点都有一个位置$x_i$,和向右的速度$v_i$ 现在要求你对其中的一些点进行染色,当一个点被染色后,在无限距离内与它相遇的点也会被染色 问在可能的$2^n$种 ...