滴水穿石-08IO

Posted 逍遥小天狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滴水穿石-08IO相关的知识,希望对你有一定的参考价值。

1.0 File

a:构造方法

package d8;

import java.io.File;

public class FileGouZao {
    public static void main(String[] args) {
        //方式一:根据一个路径得到一个一个file对象
        //File(String pathName)
        File fe = new File("D:\\\\aaa\\\\a.txt");
        
        //方式二,通过父路径的名字 + 子文件/目录得到一个File对象
        //File(String parent,String child)
        File fe2 = new File("D:\\\\aaa","a.txt");
        
        //方式三,通过父File对象 + 子文件/目录得到一个File对象
        //File(File parent,String child)
        File fe3 = new File("D:\\\\aaa");
        File fe4 = new File(fe3,"D:\\\\aaa");
    }
}
1.0

b:创建方法

package d8;

import java.io.File;
import java.io.IOException;

public class FileGouAdd {
    public static void main(String[] args) throws IOException {
        //方式一:创建文件
        //boolean createNewFile()
        File fe = new File("D:\\\\aaa\\\\a.txt");
        fe.createNewFile();
        //方式二,创建文件夹
        //boolean mkdir()
        File fe2 = new File("D:\\\\aaa","aa");
        fe2.mkdir();
        //方式三, 创建文件夹们,如果父文件夹不存在就创建
        //boolean mkdirs()
        File fe3 = new File("D:\\\\aaa");
        File fe4 = new File(fe3,"aa\\\\a");
        fe4.mkdirs();
        //注意如果没有写盘符,默认为项目路径
        File fe5 = new File("a.txt");
        fe5.createNewFile();
        
        //如果用方式一创建时,如果父目录不存在,会出现"系统找不到指定的路径"的错误
        //如果用方式二创建时,如果父目录不存在,返回false
        //如果用方式三创建时,如果父目录不存在,就创建上级目录
    }
}
1.0

c:删除方法

package d8;

import java.io.File;
import java.io.IOException;

public class FileDelete {
    public static void main(String[] args) throws IOException {
        //方式一:创建文件
        //boolean createNewFile()
        File fe = new File("D:\\\\aaa\\\\a.txt");
        fe.createNewFile();
        fe.delete();
         
        
        File fe2 = new File("D:\\\\aaa");
        System.out.println(fe2.delete());
        //--------false---------//
         
        
        //注意:删除不走回收站
        //如果是删除目录,则该目录必须为空才能删除
        
    }
}
1.0
package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Filedelete2 {
    public static void main(String[] args) throws IOException {
        //获取F盘所有的.exe文件
         
        File fe = new File("D:\\\\aaa");
        deleteAllFile(fe);
         /* */
    }
    public static void deleteAllFile(File fe) {
        if( fe.isFile()|| fe==null ) {
            System.out.println(fe.getPath());
            fe.delete();
            
        }else if(fe.isDirectory()&& fe.list().length<1){
            System.out.println(fe.getPath());
            fe.delete();             
        }else {
            File [] files = fe.listFiles();
            if (files!=null) {
                for (File file : files) {
                    deleteAllFile(file);
                }
                deleteAllFile(fe);
            }
            
        }
        
    }
}
/*D:\\aaa\\a.txt
D:\\aaa\\aa\\a
D:\\aaa\\aa
D:\\aaa\\b.txt
D:\\aaa\\d.txt
D:\\aaa*/
2.0级联删除

d:修改方法

package d8;

import java.io.File;
import java.io.IOException;

public class FileRenameTo {
    public static void main(String[] args) throws IOException {
        //方式一:路径相同重命名    
        File fe = new File("D:\\\\aaa\\\\a.txt");
        fe.createNewFile();
        File f2 = new File("D:\\\\aaa\\\\b.txt");
        fe.renameTo(f2);
        
        //方式二:路径不同,相当于剪切功能
        File fe3 = new File("a.txt");//默认路径,也就是项目路径
        fe3.createNewFile();
        File f4 = new File("D:\\\\aaa\\\\d.txt");
        fe3.renameTo(f4);
        
        //方式一:路径相同重命名    
        //方式二:路径不同,相当于剪切功能
        
    }
}
1.0

 e:判断功能

package d8;

import java.io.File;
import java.io.IOException;

public class FileJudge {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\\\aaa\\\\a.txt");

        boolean existsB = fe.exists();// 判断文件是否是存在
        boolean isFileB = fe.isFile();// 判断文件是否是一个标准文件
        boolean isDirectoryB = fe.isDirectory();// 判断文件是否是一个目录
        boolean isHiddenB = fe.isHidden();// 判断文件是否是隐藏
        boolean canReadB = fe.canRead();// 判断文件是否可读
        boolean canWriteB = fe.canWrite();// 判断文件是否是可写

        System.out.println(existsB);        //---true---/
        System.out.println(isFileB);        //---true---/
        System.out.println(isDirectoryB);    //---false---/
        System.out.println(isHiddenB);        //---false---/
        System.out.println(canReadB);        //---true---/
        System.out.println(canWriteB);        //---true---/
        
    }
}
1.0

 f:获取功能

package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileGet {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\\\aaa\\\\a.txt");

        String strAbsolutePath = fe.getAbsolutePath();// 获取文件绝对路径
        String strPath = fe.getPath();// 获取文件路径
        String strName = fe.getName();// 获取文件名
        Long length = fe.length();// 获取文件大小
        Long strLastModified = fe.lastModified();// 获取文件最后的修改时间
        Date d = new Date(strLastModified);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String s = sdf.format(d);
        System.out.println(strAbsolutePath); // ---D:\\aaa\\a.txt----/
        System.out.println(strPath); // ---D:\\aaa\\a.txt----/
        System.out.println(strName); // ---a.txt-----/
        System.out.println(length); // ---12-----/
        System.out.println(strLastModified); // ---1517184516189---/
        System.out.println(s); // ---2018-01-29 20:10:41----/

    }
}
1.0
package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileGet2 {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\\\");

         String [] nameArray = fe.list();
         for (String s : nameArray) {
            System.out.println(s);
        }
         
         File [] fileArray = fe.listFiles();
         for (File f : fileArray) {
            System.out.println(f.getName());
        }
         
         /*
$RECYCLE.BIN
00002109030000000000000000F01FEC.reg
aaa
API文档
BaiduNetdiskDownload
Config.Msi
Develop
java(1)
JavaWorkspace
LuceneNet测试文件
midnds
MyDrivers
pagefile.sys
Program Files
Program Files (x86)
StormMedia
System Volume Information
Unity3D5.0
Users
博客资料
迅雷下载
黑马JavaEE32*/
    }
}
2.0
package d8;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //找出D盘下所有以.reg结尾的文件
        File fe = new File("D:\\\\");
        
        //方法一:取出所有文件然后筛选
        File [] files = fe.listFiles();
        for (File f : files) {
            if (f.isFile()&&f.getName().endsWith(".reg")) {
                System.out.println(f.getName());
            }
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
      
        
        //方法二: 通过过滤器先过滤一下 listFiles(FileFilter filter) 
        File [] files2 = fe.listFiles(new FileFilter() {            
            @Override
            public boolean accept(File pathname) {
                // TODO Auto-generated method stub
                return pathname.isFile()&&pathname.getName().endsWith(".reg");
            }
        });
        for (File f : files2) { 
                System.out.println(f.getName()); 
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
        
        //方法三:方法二可能消耗的资源有点大 list(FilenameFilter filter) 
        String [] files3 =  fe.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                if (name.endsWith(".reg")) {
                    File fnew = new File(dir, name);
                    return fnew.isFile();
                }
                return false;
            }
        });
        for (String f : files3) { 
                System.out.println(f); 
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
    }
}
3.0

 递归获取4.0

 2.0 IO

 

2.1 InputStream

  2.1.1 FileInputStream

  a:构造方法  

package d8;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class FileInputStreamGouZao {
    public static void main(String[] args) throws FileNotFoundException {
        
        
        // 方式一:根据一个路径得到一个读取数据的写入文件流对象
        // FileOutputStream(String name)
        FileInputStream fos = new FileInputStream("D:\\\\aaa\\\\a.txt");

        // 方式二,通过File对象 得到一个读取数据的写入文件流对象
        // FileOutputStream(File file)
        File fe = new File("D:\\\\aaa", "a.txt");
        FileInputStream fos2 = new FileInputStream(fe);

         
    }
}
1.0

  b:读取方法

package d8;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamRead {
    public static void main(String[] args) throws IOException {
 
        // 方式一:
        // read()  从此输入流中读取一个数据字节。

        FileInputStream fis = new FileInputStream("D:\\\\aaa\\\\a.txt");
        int b = 0;
        while((b=fis.read())!=-1) {
            System.out.println((char)b);
        } 
        fis.close();
        

        // 方式二
        //read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
        FileInputStream fis2 = new FileInputStream("D:\\\\aaa\\\\a.txt");
        byte[] bs = new byte[5];      
        while(( fis2.read(bs))!=-1) {
            System.out.println(new String(bs));
        } 
        fis2.close();
         

        // read(byte[] b, int off, int len)
        // 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
        FileInputStream fis3 = new FileInputStream("D:\\\\aaa\\\\a.txt");
        byte[] bs2 = new byte[5];    
        int len = 0;
        while(( len = fis3.read(bs2))!=-1) {
            System.out.println(new String(bs2,0,len));
        } 
        fis3.close();
    }
}
/* 方式一
H
e
l
l
o




W
o
r
l
d
 




j
a
v
a    */

/* 方式二

Hello

Wor
ld 

java 

va 
*/
/* 方式三
Hello

Wor
ld 

java 
*/
1.0

  2.1.2 BufferedInputStream

 a:构造方法

package d8;

 
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class BufferedInputStreamGouZao {
    public static void main(String[] args) throws IOException   {
         
        // 方式一:根据一个路径得到一个写入数据的输出文件流对象
        //BufferedInputStream(InputStream out) 
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream("D:\\\\aaa\\\\a.txt"));

        // 方式二,通过Buffered对象 得到一个写入数据的输出文件流对象
        // BufferedInputStream(InputStream out, int size) 
        BufferedInputStream fis2 = new BufferedInputStream(new FileInputStream("D:\\\\aaa\\\\a.txt"),1024);

    }
}
1.0

b:读取方法

package d8;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamReade{
    public static void main(String[] args) throws IOException {

        // 方式一
        // read(int b) 将指定字节写入此文件输出流。
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream("D:\\\\aaa\\\\a.txt"));
         int b =0;
         while ((b=fis.read())!=-1) {
             System.out.println(b);
        }
         /*
97
32
119
111*/

        // read(byte[] b, int off, int len)
        // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
        BufferedInputStream fis2 = new BufferedInputStream(new FileInputStream("D:\\\\aaa\\\\a.txt"), 1024);
         byte [] by = new byte[5];
         int len =0;
         while ((len = fis2.read(by,0,2))!=-1) {
             System.out.println(new String(by,0,len));
        }
         
         //------------a -----------//
        //------------wo-----------//
    }
}    
1.0

 

2.2 OutPutStream

  2.2.1 FileOutputStream

  a:构造方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class FileOutputStreamGouZao {
    public static void main(String[] args) throws FileNotFoundException {
        
        //创建字节输出流对象做了3件事情
        //01 调用系统功能创建文件
        //02 创建fos对象
        //03 将字节输出流对象指向对应的文件

        // 方式一:根据一个路径得到一个写入数据的输出文件流对象
        // FileOutputStream(String name)
        FileOutputStream fos = new FileOutputStream("D:\\\\aaa\\\\a.txt");

        // 方式二,通过File对象 得到一个写入数据的输出文件流对象
        // FileOutputStream(File file)
        File fe = new File("D:\\\\aaa", "a.txt");
        FileOutputStream fos2 = new FileOutputStream(fe);

        // 方式三:根据一个路径得到一个写入数据的输出文件流对象,如为 true,则将字节写入文件末尾处
        // FileOutputStream(String name,boolean append)
        FileOutputStream fos3 = new FileOutputStream("D:\\\\aaa\\\\a.txt", true);

        // 方式四,通过File对象 得到一个写入数据的输出文件流对象,如为 true,则将字节写入文件末尾处
        // FileOutputStream((File file,boolean append)
        File fe2 = new File("D:\\\\aaa", "a.txt");
        FileOutputStream fos4 = new FileOutputStream(fe2, true);
    }
}
1.0

  b:写入方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamWrite {
    public static void main(String[] args) throws IOException {

        // 创建字节输出流对象做了3件事情
        // 01 调用系统功能创建文件
        // 02 创建fos对象
        // 03 将字节输出流对象指向对应的文件

        // close()方法的作用
        // 1:让流对象变成垃圾,方便被垃圾回收站回收
        // 2:通知系统去释放掉该文件相关的资源

        // 方式一:
        // write(byte[] b) 根据一个路径将指定 byte 数组写入此文件输出流中

        FileOutputStream fos = new FileOutputStream("D:\\\\aaa\\\\a.txt");
        fos.write("Hello World !".getBytes());
        fos.close();
        // -------Hello World !---------//

        // 方式二
        // write(int b) 将指定字节写入此文件输出流。
        FileOutputStream fos2 = new FileOutputStream("D:\\\\aaa\\\\b.txt");
        fos2.write(97);
        fos2.close();
        // -------a---------//

        // write(byte[] b, int off, int len)
        // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
        FileOutputStream fos3 = new FileOutputStream("D:\\\\aaa\\\\c.txt");
        fos3.write("Hello World !".getBytes(), 0, 5);
        fos3.close();
        // -------Hello---------//
    }
}
1.0
package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamWrite2 {
    public static void main(String[] args) throws IOException {

        // 创建字节输出流对象做了3件事情
        // 01 调用系统功能创建文件
        // 02 创建fos对象
        // 03 将字节输出流对象指向对应的文件

         
        // 方式一:
        // write(byte[] b) 根据一个路径将指定 byte 数组写入此文件输出流中

        FileOutputStream fos = new FileOutputStream("D:\\\\aaa\\\\a.txt",true);
        fos.write(\'\\r\');
        fos.write(\'\\n\');
        fos.write("Hello World !".getBytes());
        fos.close();
        //-------Hello World !---------//
        //--------Hello World ! ---------//
        // 方式二
        // write(int b) 将指定字节写入此文件输出流。
        File fe2 = new File("D:\\\\aaa", "b.txt");
        FileOutputStream fos2 = new FileOutputStream(fe2, true);
         
        fos2.write(97);
        fos2.close();
        //-------aa---------//
        
     
    }
}
2.0

  2.2.2 BufferedOutputStream

  a:构造方法

package d8;

 
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public classjava内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

滴水Win32练习壳的学习与实现

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

滴水穿石-10GUI

滴水穿石-12 设计模式