I/O浅谈

一、什么是I/O

我们正式的来学习IO流。那什么是IO流呢?其实我们身边就经常在用,比如说:QQ上传个图片,更改下图标,但凡涉及到文件传输了,都要用到它。接下来,我们就来揭晓它的庐山真面目。今天的内容分以下两块:File类的基本概述,File类的功能使用

回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。

当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。

当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。

因此我们把这种输入和输出动作称为IO操作。

二、File类

File的概念

  • File类是文件和目录路径名的抽象表示形式

  • Java中把文件或者目录(文件夹)都封装成File对象

  • 我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可

注:一般操作系统数据存在文件当中,有三种形式表示,文件,文件夹,路径。

  • java.io.File

  • 将操作系统中的,文件,目录(文件夹),路径,封装成File对象

  • 提供方法,操作系统中的内容

  • File与系统无关的类

  • 文件 file

  • 目录 directory

  • 路径 path


**public static void main(String[] args) {** 

//File类静态成员变量

//与系统有关的路径分隔符

String separator = File.pathSeparator;

System.out.println(separator);// 是一个分号,目录的分割  Linux :

//与系统有关的默认名称分隔符

separator = File.separator;

System.out.println(separator);// 向右 \  目录名称分割  Linux /

}

FILE 构造方法

image

public static void main(String [] args){

File file = new File("d:\\eclipse");//斜线写俩个 因为一个报错了 会转意

System.out.println(file);//windows 操作系统不区分大小写  Linux区分

}

科普:

路径

绝对路径

在系统中具有唯一性

c:\windows\system32

相对路径

表示路径之间的关系

D:\develop\Java\jdk1.7.0_72\bin

D:\develop\Java\jre7

路径之间关系

Java 父目录是D:\develop

Java 子目录是:jdk1.7.0_72

父路径是 唯一性

子目录是可以多个

FILE其他的构造方法


/*

*  File(File parent,String child)

*  传递路径,传递File类型父路径,字符串子路径

*  好处: 父路径是File类型,父路径可以直接调用File类方法

*/

public static void function_2(){

File parent = new File("d:");

File file = new File(parent,"eclipse");

System.out.println(file);

}

/*

*  File(String parent,String child)

*  传递路径,传递字符串父路径,字符串子路径

*  好处: 单独操作父路径和子路径

*/

public static void function_1(){

File file = new File("d:","eclipse");

System.out.println(file);

}

File类创建文件功能


/*

*  File创建文件的功能

*  boolean createNewFile()

*  创建的文件路径和文件名,在File构造方法中给出

*  文件已经存在了,不在创建

*/

public static void function()throws IOException{

File file = new File("c:\\a.txt");

boolean b = file.createNewFile();

System.out.println(b);

}

File类创建目录功能

/*

*  File创建文件夹功能

*  boolean mkdirs() 创建多层文件夹

*  创建的路径也在File构造方法中给出

*  文件夹已经存在了,不在创建

*/

public static void function_1(){

File file = new File("c:\\abc");

boolean b = file.mkdirs();

System.out.println(b);

}

File类删除功能


/*

*  File类的删除功能

*  boolean delete()

*  删除的文件或者是文件夹,在File构造方法中给出

*  删除成功返回true,删除失败返回false

*  删除方法,不走回收站,直接从硬盘中删除

*  删除有风险,运行需谨慎

*/

public static void function_2(){

File file = new File("c:\\a.txt");

boolean b = file.delete();

System.out.println(b);

}

File类获取功能

  • a: 方法介绍

  • String getName(): 返回路径中表示的文件或者文件夹名

  • 获取路径中的最后部分的名字

  • long length(): 返回路径中表示的文件的字节数

  • String getAbsolutePath(): 获取绝对路径,返回String对象

  • File getAbsoluteFile() : 获取绝对路径,返回File对象

  • eclipse环境中,写一个相对路径,绝对位置工程根目录

  • String getParent(): 获取父路径,返回String对象

  • File getParentFile(): 获取父路径,返回File对象


/*

* File类的获取功能

* String getParent() 返回String对象

* File getParentFile()返回File对象

* 获取父路径

*/

public static void function_3(){

File file = new File("d:\\eclipse\\eclipse.exe");

File parent = file.getParentFile();

System.out.println(parent);

}

/*

* File类获取功能

* String getAbsolutePath() 返回String对象

* File  getAbsoluteFile() 返回File对象

* 获取绝对路径

* eclipse环境中,写的是一个相对路径,绝对位置工程根目录

*/

public static void function_2(){

File file = new File("src");

File absolute = file.getAbsoluteFile();

System.out.println(absolute);

}

/*

* File类获取功能

* long length()

* 返回路径中表示的文件的字节数

*/

public static void function_1(){

File file = new File("d:\\eclipse\\eclipse.exe");

long length = file.length();

System.out.println(length);

}

/*

*  File类的获取功能

*  String getName()

*  返回路径中表示的文件或者文件夹名

*  获取路径中的最后部分的名字

*/

public static void function(){

File file = new File("d:\\eclipse\\eclipse.exe");

String name = file.getName();

System.out.println(name);

/*String path = file.getPath();

System.out.println(path);*/

// System.out.println(file);

}

File类判断功能

  • boolean exists(): 判断File构造方法中封装路径是否存在

  • 存在返回true,不存在返回false

  • boolean isDirectory(): 判断File构造方法中封装的路径是不是文件夹

  • 如果是文件夹,返回true,不是文件返回false

  • boolean isFile(): 判断File构造方法中封装的路径是不是文件

  • 如果是文件,返回true,不是文件返回false


/*

*  File判断功能

*  boolean isDirectory()

*  判断File构造方法中封装的路径是不是文件夹

*  如果是文件夹,返回true,不是文件返回false

* 

*  boolean isFile()

*  判断File构造方法中封装的路径是不是文件

*/

public static void function_1(){

File file = new File("d:\\eclipse\\eclipse.exe");

if(file.exists()){

boolean b = file.isDirectory();

System.out.println(b);

}

}

/*

*  File判断功能

*  boolean exists()

*  判断File构造方法中封装路径是否存在

*  存在返回true,不存在返回false

*/

public static void function(){

File file = new File("src");

boolean b = file.exists();

System.out.println(b);

}

File类list获取功能

  • String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

  • 返回只有名字

  • File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

  • 返回的是目录或者文件的全路径

  • static File[] listRoots(): 列出可用的文件系统根


public static void function_2(){

//获取系统中的所有根目录

File[] fileArr = File.listRoots();

for(File f : fileArr){

System.out.println(f);

}

}

/*

*  File类的获取功能

*  File[] listFiles()

*  获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

*  返回的是目录或者文件的全路径

*/

public static void function_1(){

File file = new File("d:\\eclipse");

File[] fileArr = file.listFiles();

for(File f : fileArr){

System.out.println(f);

}

}

/*

*  File类的获取功能

*  String[] list()

*  获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

*  返回只有名字

*/

public static void function(){

File file = new File("c:");

String[] strArr = file.list();

System.out.println(strArr.length);

for(String str : strArr){

System.out.println(str);

}

}

递归遍历全目录


public static void main(String[] args) {

File dir = new File("d:\\eclipse");

getAllDir(dir);

}

/*

*  定义方法,实现目录的全遍历

*/

public static void getAllDir(File dir){

System.out.println(dir);

//调用方法listFiles()对目录,dir进行遍历

File[] fileArr = dir.listFiles();

for(File f : fileArr){

//判断变量f表示的路径是不是文件夹

if(f.isDirectory()){

//是一个目录,就要去遍历这个目录

//本方法,getAllDir,就是给个目录去遍历

//继续调用getAllDir,传递他目录

getAllDir(f);

}else{

System.out.println(f);

}

}

}

你可能感兴趣的:(I/O浅谈)