黑马程序员技术交流社区

标题: File类和IO流 [打印本页]

作者: 一支穿云箭    时间: 2019-5-9 13:49
标题: File类和IO流
一、File类

方法名
说明
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例

1.2File类创建功能

方法名
说明
public boolean createNewFile()
当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
public boolean mkdir()
创建由此抽象路径名命名的目录
public boolean mkdirs()
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录

1.3File类判断和获取功能

方法名
说明
public boolean isDirectory()
测试此抽象路径名表示的File是否为目录
public boolean isFile()
测试此抽象路径名表示的File是否为文件
public boolean exists()
测试此抽象路径名表示的File是否存在


方法名
说明
public String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串
public String getPath()
将此抽象路径名转换为路径名字符串
public String getName()
返回由此抽象路径名表示的文件或目录的名称
public String[] list()
返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
public File[] listFiles()
返回此抽象路径名表示的目录中的文件和目录的File对象数组

1.4File类删除功能
方法名
说明
public boolean delete()
删除由此抽象路径名表示的文件或目录


二、递归

public class DiGuiDemo02 {    public static void main(String[] args) {        //根据给定的路径创建一个File对象//        File srcFile = new File("E:\\itcast");        File srcFile = new File("E:\\itheima");        //调用方法        getAllFilePath(srcFile);    }    //定义一个方法,用于获取给定目录下的所有内容,参数为第1步创建的File对象    public static void getAllFilePath(File srcFile) {        //获取给定的File目录下所有的文件或者目录的File数组        File[] fileArray = srcFile.listFiles();        //遍历该File数组,得到每一个File对象        if(fileArray != null) {            for(File file : fileArray) {                //判断该File对象是否是目录                if(file.isDirectory()) {                    //是:递归调用                    getAllFilePath(file);                } else {                    //不是:获取绝对路径输出在控制台                    System.out.println(file.getAbsolutePath());                }            }        }    }}
三、IO流
3.1IO流概述和分类

3.2字节流写数据

3.3字节流写数据的三种方式
方法名
说明
void write(int b)
将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b)
将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
void write(byte[] b, int off, int len)
将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据

3.4字节流写数据的两个小问题

3.5字节流写数据加异常处理

try{        可能出现异常的代码;}catch(异常类名 变量名){        异常的处理代码;}finally{        执行所有清除操作;}

public class FileOutputStreamDemo04 {    public static void main(String[] args) {        //加入finally来实现释放资源        FileOutputStream fos = null;        try {            fos = new FileOutputStream("myByteStream\\fos.txt");            fos.write("hello".getBytes());        } catch (IOException e) {            e.printStackTrace();        } finally {            if(fos != null) {                try {                    fos.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}
3.6字节流读数据(一次读一个字节数据)

public class FileInputStreamDemo01 {    public static void main(String[] args) throws IOException {        //创建字节输入流对象        //FileInputStream(String name)        FileInputStream fis = new FileInputStream("myByteStream\\fos.txt");        int by;        /*            fis.read():读数据            by=fis.read():把读取到的数据赋值给by            by != -1:判断读取到的数据是否是-1         */        while ((by=fis.read())!=-1) {            System.out.print((char)by);        }        //释放资源        fis.close();    }}
3.7字节流复制文本文件
public class CopyTxtDemo {    public static void main(String[] args) throws IOException {        //根据数据源创建字节输入流对象        FileInputStream fis = new FileInputStream("E:\\itcast\\窗里窗外.txt");        //根据目的地创建字节输出流对象        FileOutputStream fos = new FileOutputStream("myByteStream\\窗里窗外.txt");        //读写数据,复制文本文件(一次读取一个字节,一次写入一个字节)        int by;        while ((by=fis.read())!=-1) {            fos.write(by);        }        //释放资源        fos.close();        fis.close();    }}
3.8字节流读数据(一次读一个字节数组数据)
public class FileInputStreamDemo02 {    public static void main(String[] args) throws IOException {        //创建字节输入流对象        FileInputStream fis = new FileInputStream("myByteStream\\fos.txt");        /*            hello\r\n            world\r\n            第一次:hello            第二次:\r\nwor            第三次:ld\r\nr         */        byte[] bys = new byte[1024]; //1024及其整数倍        int len;        while ((len=fis.read(bys))!=-1) {            System.out.print(new String(bys,0,len));        }        //释放资源        fis.close();    }}
3.9字节流复制图片
public class CopyJpgDemo {    public static void main(String[] args) throws IOException {        //根据数据源创建字节输入流对象        FileInputStream fis = new FileInputStream("E:\\itcast\\mn.jpg");        //根据目的地创建字节输出流对象        FileOutputStream fos = new FileOutputStream("myByteStream\\mn.jpg");        //读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)        byte[] bys = new byte[1024];        int len;        while ((len=fis.read(bys))!=-1) {            fos.write(bys,0,len);        }        //释放资源        fos.close();        fis.close();    }}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2