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. c语言指针,数组

    指针:说简单点就是一个地址.例如int *p,p是个变量,里面放的是地址0x0000,同理,每一个指针,不管什么类型,都是地址,也就是空间都是4个字节(32位机). 以此类推,指针也有指向它的指针in ...

  2. 明天找python工作,看看这几道Python面试题吧,Python面试题No14

    第1题: 如何解决验证码的问题,用什么模块,听过哪些人工打码平台? PIL.pytesser.tesseract模块 平台的话有:(打码平台特殊,不保证时效性) 云打码 挣码 斐斐打码 若快打码 超级 ...

  3. Docker存储卷

    六.Docker 存储卷(volume) COW:写时复制 Bind mount volume:手动mount绑定的卷 # docker run --name centos-3 -it -v /dat ...

  4. 存储引擎:MySQL系列之七

    一.MyISAM存储引擎 缺点: 不支持事务 最小粒度锁:表级 读写相互阻塞,写入不能读,读时不能写 不支持MVCC(支持多版本并发控制机制) 不支持聚簇索引 不支持数据缓存 不支持外键 崩溃恢复性较 ...

  5. zabbix对tcp状态监控

    1.先编写一个获取tcp状态的脚本文件,脚本放在/usr/lib/zabbix/alertscripts/vim /usr/lib/zabbix/alertscripts/tcp_status.sh ...

  6. 华东交通大学2017年ACM“双基”程序设计竞赛 1002

    Problem Description 一天YZW参加了学校组织交际舞活动,活动的开始活动方分别给男生和女生从1-n进行编号,按照从小到大顺时针的方式进行男女搭档分配,相同编号的男女组合成一对,例如一 ...

  7. jcmd jmap应用:一个String经典笔试题的验证

    笔试题: String strA = new String("123123");这一行中创建了几个String对象?? public class StringHeapCountTe ...

  8. Eclipse中mybatis的xml文件没有提示,出现the file cannot be validated as the XML definition.....

    1.下载dtd文件 2.在eclipse中配置本地dtd文件: Window->Preferences->XML->XML Catalog->User Specified En ...

  9. JAVA多线程之Volatiles

    Java 语言中的 volatile 变量可以被看作是一种 “轻量级的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但 ...

  10. string去空格方法

    String str = " asd "; String ntr = ("A" + str).trim().substring(1);//将头部加一个字符再用t ...