博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流...
阅读量:5068 次
发布时间:2019-06-12

本文共 11739 字,大约阅读时间需要 39 分钟。

/** * File类:文件的创建、删除、重命名、得到路径、创建时间等,是唯一与文件本身有关的操作类 */public class Main {    public static void main(String[] args) {        //File.separator 表示分隔符        File f1 = new File("c:" + File.separator + "fuck" + File.separator + "javaTest1.txt");        String s1 = File.pathSeparator; //路径分隔符        System.out.println(File.separator + "  " + s1);        boolean b1 = f1.exists(); //文件是否存在        System.out.println(b1);        if (!b1) {            try {                boolean bt1 = f1.createNewFile(); //创建文件                System.out.println(bt1);            } catch (IOException e) {                e.printStackTrace();            }        }        System.out.println(f1.delete()); //删除文件        //System.out.println(""); 快捷键:打sout,然后中按Tab键         System.out.println(f1.getParent()); //得到文件的上一级路径         System.out.println(f1.isDirectory()); //判断是否是目录                File f2 = new File("c:" + File.separator + "fuck" + File.separator);        String[] fname = f2.list(); //列出文件夹中的所有文件名        for(String i:fname) System.out.println(i);                File[] files = f2.listFiles(); //列出文件中的所有文件,以file数组返回        for(File i:files) System.out.println(i.getName()+" "+i.length());                File f3 = new File("c:\\fuck\\JavaTest1");         System.out.println(f3.mkdir()); //创建文件夹        f3.delete();                System.out.println(f3.renameTo(new File("c:\\fuck\\JavaTest2"))); //重命名    }}

 

/** * 在某个目录中找到某个扩展名的所有文件 */public class Main {    private static int num = 0;    public static void findFile(File f,String extName){        if(f==null)            return;        else{            if(f.isDirectory()){                File[] fs = f.listFiles();                if(fs!=null){                    for(File i:fs)                        findFile(i,extName);                }            }else{                String path = f.getPath().toLowerCase();                if(path.endsWith(extName)){                    System.out.println(f.getPath());                    ++num;                }            }        }    }    public static void main(String[] args) {        File  f = new File("c:\\fuck\\");        String extName = ".cpp";        findFile(f,extName);        System.out.println(num);    }}

 

/** * IO流:输入输出流 * 流:一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。 * 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 * 根据处理数据类型的不同分为:1.字符流      2.字节流 * 根据数据流向不同分为:1.输入流(程序从外部读取)       2.输出流(程序将数据写到外部) *  * OutputStream类:接受输出字节并将这些字节发送到某个接收器 */public class Main {        public static void main(String[] args) {        //write1();        write2();        System.out.println("finished.");    }        /**     * 字节输出流方式一:每次输出一个字节     */    public static void write1(){        OutputStream out = null;        try {            out = new FileOutputStream("c:\\fuck\\javaTest1.txt");            String info = "helloIO";            byte[] bs = info.getBytes();            for(int i=0;i

 

public class Main {        public static void main(String[] args) {        //read1();//        read2();        read3();        System.out.println("finished.");    }        /**     * 字节输入流的读取方式一:每次读取一个字节     */    public static void read1(){        InputStream  in = null;        try {            in = new FileInputStream("c:\\fuck\\javaTest1.txt");            int bs = -1; //定义一个字节,-1表示没有数据            while((bs = in.read())!=-1){                System.out.print((char)bs);                 }            System.out.println("");        } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        } finally{            try {                in.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }    }       /**     * 字节输入流的读取方式二:一次性读取所有字节(适合不太大的文件)     */    public static void read2(){        InputStream in = null;        try {            File f = new File("c:\\fuck\\javaTest1.txt");            in = new FileInputStream(f);            byte[] bs = new byte[(int)f.length()]; //根据文件大小构造字节数组            int len = in.read(bs);            System.out.println(new String(bs));            System.out.println("len = "+len);        } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        } finally{            try {                in.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }    }        /**     * 字节输入流的读取方式三:每次读取指定大小的字节(折中的方法)     */    public static void read3(){        InputStream in = null;        try {            File f = new File("c:\\fuck\\javaTest1.txt");            in = new FileInputStream(f);            byte[] bs = new byte[5];            int len = -1; //每次读取的实际长度            StringBuilder sb = new StringBuilder();            while((len=in.read(bs))!=-1){                sb.append(new String(bs,0,len));            }            System.out.println(sb);        } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        } finally{            try {                in.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }    }}

 

/** * 字符流:底层也是用字节流实现的 */public class Main {        public static void main(String[] args) {        writer1();        System.out.println("finished.");    }       /**     * 字符输出流方式一:以字符数组方式输出     */    public static void writer1(){        Writer out = null;        try {            File f = new File("c:\\fuck\\javaTest1.txt");            out = new FileWriter(f,true); //true表示追加方式             String info = "good good study, day day up.";            //out.write(info.toCharArray());            out.write(info);                    } catch (IOException ex) {            ex.printStackTrace();        } finally{            try{                out.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }    }}

 

/** * 字符流:底层也是用字节流实现的 */public class Main {        public static void main(String[] args) {        //byteReader(); //输出一堆乱码        reader1();        System.out.println("finished.");    }        /**     * 字符输入流方式一:使用指定大小的字符数组输入     */    public static void reader1(){        File f = new File("c:\\fuck\\javaTest1.txt");        try {            Reader in = new FileReader(f);            char[] cs = new char[10];            int len = -1;            StringBuilder sb = new StringBuilder();            while((len=in.read(cs))!=-1){                sb.append(new String(cs,0,len));            }            in.close();            System.out.println(sb);                    } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }        /**     * 使用字节流读取文本文件     */    public static void byteReader(){        File f = new File("c:\\fuck\\javaTest1.txt");        try {            InputStream in = new FileInputStream(f);            byte[] bs = new byte[10];            int len = -1;            StringBuilder sb = new StringBuilder();            while((len=in.read(bs))!=-1){                sb.append(new String(bs,0,len));            }            in.close();            System.out.println(sb);                    } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }}

 

/** * 字符流:底层也是用字节流实现的 * :根据指定的编码,将1个或多个字节转化为java里的unicode字符,然后进行操作 * 字符操作一般用Writer,Reader等,字节操作一般用InputStream,OutputStream以及各种包装类,比如: * BufferedInputStream和BufferedOutputStream等 * 总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会简单些,如果不确认,那么用字节流总是不会错的。 */public class Main {        public static void main(String[] args) {        //byteReader(); //输出一堆乱码        reader1();        System.out.println("finished.");    }        /**     * 字符输入流方式一:使用指定大小的字符数组输入     */    public static void reader1(){        File f = new File("c:\\fuck\\javaTest1.txt");        try {            Reader in = new FileReader(f);            char[] cs = new char[10];            int len = -1;            StringBuilder sb = new StringBuilder();            while((len=in.read(cs))!=-1){                sb.append(new String(cs,0,len));            }            in.close();            System.out.println(sb);                    } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }        /**     * 使用字节流读取文本文件     */    public static void byteReader(){        File f = new File("c:\\fuck\\javaTest1.txt");        try {            InputStream in = new FileInputStream(f);            byte[] bs = new byte[10];            int len = -1;            StringBuilder sb = new StringBuilder();            while((len=in.read(bs))!=-1){                sb.append(new String(bs,0,len));            }            in.close();            System.out.println(sb);                    } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }}

 

/** * 指定一个盘符下的文件,把该文件复制到指定的目录下。 */public class Main {        public static void main(String[] args) {        copyFile("c:\\fuck\\javaTest1.txt","c:\\fuck\\javaTest2.txt");        copyFile("c:\\fuck\\ning.bmp","c:\\fuck\\ning2.txt"); //把.txt改成.bmp就可以看了        System.out.println("finished.");    }        public static void copyFile(String src,String des){        File f1 = new File(src);        File f2 = new File(des);        InputStream in = null;        OutputStream out = null;        try {            in = new FileInputStream(f1);            out = new FileOutputStream(f2);            byte[] bs = new byte[105];            int len = -1;            while((len=in.read(bs))!=-1){                out.write(bs,0,len);            }                    } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        } finally{            try {                in.close();                out.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }            }}

 

/** * 转换流:将一个字节流转换为字符流,也可以将一个字符流转换为字节流 * OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式,可使用指定的charset将要写入流 *                     中的字符编码成字节。 * InputStreamReader:将输入的字节流转换为字符流输入形式,使用指定的charset读取字节并将其解码为 *                    字符。 */public class Main {        public static void main(String[] args) {        //writer();        reader();        System.out.println("finished.");    }        public static void writer(){ //把字符流转成字节流        try {            OutputStream out = new FileOutputStream("c:\\fuck\\javaTest1.txt");             String info = "你好吗abc.";            Writer w1 = new OutputStreamWriter(out); //通过字节输出流构造一个字符输出流            w1.write(info);                        w1.close();            out.close();        } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }        public static void reader(){ //把字节流转成字符流        try {            InputStream in = new FileInputStream("c:\\fuck\\javaTest1.txt");             Reader r1 = new InputStreamReader(in);            char[] cs = new char[105];            int len = -1;            StringBuilder sb = new StringBuilder();            while((len=r1.read(cs))!=-1){                sb.append(new String(cs,0,len));            }            r1.close();            in.close();            System.out.println(sb);                  } catch (FileNotFoundException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }    }}

 

转载于:https://www.cnblogs.com/fish7/p/4149726.html

你可能感兴趣的文章
C#往线程里传递参数
查看>>
PAT A1004 Counting Leaves(30)
查看>>
面向对象---继承
查看>>
for 循环的执行顺序问题
查看>>
第一个关于控件的实例(对话框)
查看>>
python对 windows系统监控插件
查看>>
CentOS7.5下安装Python3.7 --python3
查看>>
CSS Variables
查看>>
微信接口php
查看>>
hibernate_validator_08
查看>>
修改/etc/profile和/etc/environment导致图形界面无法登陆的问题
查看>>
PPPOE
查看>>
tcpdump常用命令
查看>>
(原创)Quartus硬件工程路径改变,nios工程该怎么办?
查看>>
关于 VS2013监视窗口的内存面板及寄存器面板
查看>>
android断点续传实现方案之三
查看>>
类的封装
查看>>
android 多渠道打包之tools:replace
查看>>
java.util.Properties类的介绍-配置文件的读写【-Z-】
查看>>
第十四周
查看>>