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. poj 1635 Subway tree systems(树的最小表示)

    Subway tree systems POJ - 1635 题目大意:给出两串含有‘1’和‘0’的字符串,0表示向下搜索,1表示回溯,这样深搜一颗树,深搜完之后问这两棵树是不是同一棵树 /* 在po ...

  2. 分层图最短路 【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级

    1579: [Usaco2009 Feb]Revamping Trails 道路升级 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M< ...

  3. jmeter如何设置全局变量以及调用方法

    当遇到如跨线程组调用变量等情况,需要设置全局变量. 1.打开函数助手 输入需要的值然后点击生成按钮,或者直接使用${__setProperty(newuserid,${userid},)}的格式 设置 ...

  4. spring boot test MockBean

    使用spring boot , MockBean @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) p ...

  5. 配置IIS Web服务器

    配置IIS Web服务器 1.1 控制面板中找到“程序”并打开 1.2 程序界面找到“启用或关闭Windows功能”并打开 1.3 上面两步也可以简化为一步:按[Win + R]快捷键打开运行对话框, ...

  6. 019 Remove Nth Node From End of List 删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点并返回头结点.例如,给定一个链表: 1->2->3->4->5, 并且 n = 2.当删除了倒数第二个节点后链表变成了 1->2 ...

  7. Unity MonoBehaviour.Invoke 调用

    使用 Invoke() 方法需要注意 3点: 1 :它应该在 脚本的生命周期里的(Start.Update.OnGUI.FixedUpdate.LateUpdate)中被调用: 2:Invoke(); ...

  8. (转)由su和su -的区别谈学习linux运维方法

    由su和su -的区别谈学习linux运维方法 原文:http://blog.51cto.com/oldboy/1053606 由su和su -的区别谈学习linux运维方法一例 老男孩Linux培训 ...

  9. sql 时间函数用法

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  10. nginx 添加https支持

    自行颁发不受浏览器信任的SSL证书为晒晒IQ网颁发证书.ssh登陆到服务器上,终端输入以下命令,使用openssl生成RSA密钥及证书. # 生成一个RSA密钥 $ openssl genrsa -d ...