2017.8.16File和IO流的小案列

来源:互联网 发布:windows 安装xcode教程 编辑:程序博客网 时间:2024/06/15 07:29

Io流之递归法:
什么是递归:方法定义中调用方法本身的现象
注意事项:
* A:递归一定要有出口,否则就是死递归
* B:递归的次数不能太多,否则就内存溢出
* C:构造方法不能递归使用


有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?


方法一:

public static int fib(int n) {        if (n == 1 || n == 2) {            return 1;        } else {            return fib(n - 1) + fib(n - 2);        }    }

方法二:

int a = 1;        int b = 1;        for (int x = 0; x < 18; x++) {            // 临时变量存储上一次的a            int temp = a;            a = b;            b = temp + b;        }        System.out.println(b);

方法三


int[] arr = new int[20];        arr[0] = 1;        arr[1] = 1;        // arr[2] = arr[0] + arr[1];        // arr[3] = arr[1] + arr[2];        // ...        for (int x = 2; x < arr.length; x++) {            arr[x] = arr[x - 2] + arr[x - 1];        }        System.out.println(arr[19]);

案列 二(获取所有.Java的文件)(很重要可以试试看)


public static void main(String[] args) {        // TODO Auto-generated method stub        File file=new File("F:\\");        getAlljavaFilePath(file);    }    private static void getAlljavaFilePath(File file) {        // TODO Auto-generated method stub         File[] list= file.listFiles();            for(File as:list){                if(as.isDirectory()){                    getAlljavaFilePath(as);                }else{                    if(as.getName().endsWith(".java")){                        System.out.println(as.getAbsolutePath());                    }                }            }    }

案列三:删除文件


public static void main(String[] args) {        // 封装目录        File srcFolder = new File("demo");        // 递归实现        deleteFolder(srcFolder);    }    private static void deleteFolder(File srcFolder) {        // 获取该目录下的所有文件或者文件夹的File数组        File[] fileArray = srcFolder.listFiles();        if (fileArray != null) {            // 遍历该File数组,得到每一个File对象            for (File file : fileArray) {                // 判断该File对象是否是文件夹                if (file.isDirectory()) {                    deleteFolder(file);                } else {                    System.out.println(file.getName() + "---" + file.delete());                }            }            System.out                    .println(srcFolder.getName() + "---" + srcFolder.delete());        }    }

IO流的学习


1.用来上传和下载文件等操作。

2.IO流用来设备之间的传输问题。


    IO流的分类: *      流向: *          输入流 读取数据 *          输出流 写出数据 *      数据类型: *          字节流 *              字节输入流   读取数据    InputStream *              字节输出流   写出数据    OutputStream *          字符流 *              字符输入流   读取数据    Reader *              字符输出流   写出数据    Writer *          注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。   

案列一:

public class FileOutputStreamDemo {    public static void main(String[] args) throws IOException {        FileOutputStream fos = new FileOutputStream("QST.txt");        fos.write("hello,IO".getBytes());        fos.write("java".getBytes());    }}

字节输出流操作步骤:

A:创建字节输出流对象

B:调用write()方法

C:释放资源


案列二:


public class FileOutputStreamDemo2 {    public static void main(String[] args) throws IOException {        FileOutputStream fos = new FileOutputStream("yan55.txt");        byte[] bys={97,98,99,100,101};        fos.write(bys);        fos.write(bys,1,3);        //释放资源        fos.close();    }}

读取数据的方式:
* A:int read():一次读取一个字节
* B:int read(byte[] b):一次读取一个字节数组
*


案列三:

public class FileInputStreamDemo {    public static void main(String[] args) throws IOException {        FileInputStream fis = new FileInputStream("haah.txt");        int by = 0;        while ((by = fis.read()) != -1) {            System.out.print((char) by);        }        // 释放资源        fis.close();    }}

复制文本文件。

  • 数据源:从哪里来
    a.txt – 读取数据 – FileInputStream

    目的地:到哪里去
    b.txt – 写数据 – FileOutputStream


案列四:

public class CopyFileDemo {    public static void main(String[] args) throws IOException {        // 封装数据源        FileInputStream fis = new FileInputStream("a.txt");        // 封装目的地        FileOutputStream fos = new FileOutputStream("b.txt");        int by = 0;        while ((by = fis.read()) != -1) {            fos.write(by);        }        // 释放资源(先关谁都行)        fos.close();        fis.close();    }}

案列五:

public class CopyImageDemo {    public static void main(String[] args) throws IOException {        // 封装数据源        FileInputStream fis = new FileInputStream("e:\\haha.jpg");        // 封装目的地        FileOutputStream fos = new FileOutputStream("mn.jpg");        // 复制数据        int by = 0;        while ((by = fis.read()) != -1) {            fos.write(by);        }        // 释放资源        fos.close();        fis.close();    }}

案列六:

public class CopyFileDemo {    public static void main(String[] args) throws IOException {        // 封装数据源        FileInputStream fis = new FileInputStream("c:\\a.txt");        FileOutputStream fos = new FileOutputStream("d:\\b.txt");        // 复制数据        byte[] bys = new byte[1024];        int len = 0;        while ((len = fis.read(bys)) != -1) {            fos.write(bys, 0, len);        }        // 释放资源        fos.close();        fis.close();    }}

案列七:

public class BufferedInputStreamDemo {    public static void main(String[] args) throws IOException {        // BufferedInputStream(InputStream in)        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(                "bos.txt"));        // 读取数据        // int by = 0;        // while ((by = bis.read()) != -1) {        // System.out.print((char) by);        // }        // System.out.println("---------");        byte[] bys = new byte[1024];        int len = 0;        while ((len = bis.read(bys)) != -1) {            System.out.print(new String(bys, 0, len));        }        // 释放资源        bis.close();    }}

案列八:

public class BufferedOutputStreamDemo {    public static void main(String[] args) throws IOException {        // BufferedOutputStream(OutputStream out)        // FileOutputStream fos = new FileOutputStream("bos.txt");        // BufferedOutputStream bos = new BufferedOutputStream(fos);        // 简单写法        BufferedOutputStream bos = new BufferedOutputStream(                new FileOutputStream("bos.txt"));        // 写数据        bos.write("hello".getBytes());        // 释放资源        bos.close();    }}

案列九:

public class CopyMp4Demo {    public static void main(String[] args) throws IOException {        long start = System.currentTimeMillis();        // method1("e:\\haah.mp4", "copy1.mp4");        // method2("e:\\hehe.mp4", "copy2.mp4");        // method3("e:\haha.mp4", "copy3.mp4");        method4("e:\\haha.mp4", "copy4.mp4");        long end = System.currentTimeMillis();        System.out.println("共耗时:" + (end - start) + "毫秒");    }    // 高效字节流一次读写一个字节数组:    public static void method4(String srcString, String destString)            throws IOException {        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(                srcString));        BufferedOutputStream bos = new BufferedOutputStream(                new FileOutputStream(destString));        byte[] bys = new byte[1024];        int len = 0;        while ((len = bis.read(bys)) != -1) {            bos.write(bys, 0, len);        }        bos.close();        bis.close();    }    // 高效字节流一次读写一个字节:    public static void method3(String srcString, String destString)            throws IOException {        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(                srcString));        BufferedOutputStream bos = new BufferedOutputStream(                new FileOutputStream(destString));        int by = 0;        while ((by = bis.read()) != -1) {            bos.write(by);        }        bos.close();        bis.close();    }    // 基本字节流一次读写一个字节数组    public static void method2(String srcString, String destString)            throws IOException {        FileInputStream fis = new FileInputStream(srcString);        FileOutputStream fos = new FileOutputStream(destString);        byte[] bys = new byte[1024];        int len = 0;        while ((len = fis.read(bys)) != -1) {            fos.write(bys, 0, len);        }        fos.close();        fis.close();    }    // 基本字节流一次读写一个字节    public static void method1(String srcString, String destString)            throws IOException {        FileInputStream fis = new FileInputStream(srcString);        FileOutputStream fos = new FileOutputStream(destString);        int by = 0;        while ((by = fis.read()) != -1) {            fos.write(by);        }        fos.close();        fis.close();    }----------
原创粉丝点击