文件与IO

 

范例1、

File f=new File("D:\\File\\NewFile");
        if(!f.exists())//判断文件是否存在,若不存在
        {
            try {//创建一个新的路径该文件
                f.createNewFile();
                System.out.println("创建成功");
            } catch (IOException e) {//若路径不存在  获取异常
                e.printStackTrace();
            }
        }
如果路径错误,获取异常,因此要用createNewFile必须写try catch语句
java.io.IOException: 系统找不到指定的路径。 at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(Unknown Source) at org.file.FileDemo.main(FileDemo.java:
18)

范例2、

System.out.println(f.delete());//返回true  如果是文件夹,且有文件,返回false 删除失败
f.mkdir();//创建文件夹

范例3、

查找文件夹下的某种后缀名的文件   //只能查找一层  文件夹中的文件夹中的文件忽略不会查找

    //过滤查找
        File f=new File("D:\\File");
        File[] files=f.listFiles((filename)->filename.getName().endsWith(".txt"));//运用labda表达式实现filename接口   endWith 判断后缀是某种类型
        for (File file : files) {
            System.out.println(file.getName());
        }

范例4、

运用递归查找文件夹下所有的子文件中某种类型的文件路径

public class RecursiveSerch {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        FindFile(new File("D:\\File"), ".jpg");
    }
    public static void FindFile(File file,String str) {
        if(file==null)return;//如果文件不存在
        if(file.isDirectory())//判断是否为文件夹
        {
            File[] files=file.listFiles();//列出文件夹下的所有文件
            if(files!=null)//如果不是空文件夹 
            {
                for (File f : files) {//foreach循环
                    FindFile(f,str);//递归查看子文件夹下的文件
                }
            }
        }
        else {
            if(file.getName().toLowerCase().endsWith(str))//获取文件名  并且将文件名改成小写 并判断后缀名是否为str类型
                System.out.println(file.getAbsolutePath());//获取文件的绝对路径
        }
    } 

}

 字节流

------从程序中写文件叫输出流

-----从文件中读取到程序叫输入流

输出流

public static void out() {
        File file=new File("D:\\File\\File.txt");
        try {
            OutputStream out=new FileOutputStream(file);//OutputStream out=new FileOutputStream(file,true); //代表覆盖写入
            String str="小乔流水哗啦啦";
            out.write(str.getBytes());//输出流读取的是字符  因此要getbyte
            out.close();//关闭输出流
            System.out.println("写入成功!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }     
    }

输入流

public static void in() {
        File file=new File("D:\\File\\File.txt");
        try {
            InputStream in=new FileInputStream(file);
            byte[] bt=new byte[1024];//表示每次读取的字符长度
            StringBuilder stb=new StringBuilder();
            int len=-1;
            //把数据读取到数组中,并返回读取的字节数当不等于-1时,代表读取到了数据,如果等于数据,表示文件已经读完
            if((len=in.read(bt))!=-1)
            {
                stb.append(new String(bt));
            }
            in.close();//关闭输入流
            System.out.println(stb);
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

猜你喜欢

转载自www.cnblogs.com/lovelingdu/p/9459806.html