File 类的用法和 InputStream, OutputStream 的用法

1.File类的用法

File 类的用法和 InputStream, OutputStream 的用法_第1张图片

 下面就用几个简单的代码案例来熟悉File类里面函数的用法:

public class IODemo1 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test2.txt");
        //File f = new File("C:/User/1/test.txt");
        System.out.println(f.getParent());
        System.out.println(f.getName());
        System.out.println(f.getPath());
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getCanonicalPath());//对于绝对路径的简化
    }
}

运行结果: 

 File 类的用法和 InputStream, OutputStream 的用法_第2张图片

 

public class IODemo2 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test.txt");
        System.out.println(f.exists());// 该文件是否存在
        System.out.println(f.isFile());// 是否有该文件
        System.out.println(f.isDirectory());// 是否有目录
        boolean ret = f.createNewFile();//这个是用来创建文件的
        System.out.println(ret);
    }
}

 运行结果:为 true true false false

  这个运行结果是已经创建了 test.txt这个文件了。

public class IODemo3 {
    public static void main(String[] args) {
        File f = new File("./test.txt");//jvm 退出是才删除
        f.deleteOnExit();
    }
}
public class IODemo4 {
    public static void main(String[] args) {
        File f = new File(".");
        File[] list = f.listFiles();// . 表示当前路径 返回 File 对象代表的目录
下的所有文件,以 File 对象表示
        System.out.println(Arrays.toString(list));
    }
}
public class IODemo5 {
    public static void main(String[] args) {
        File f = new File("./aaa/bbb/ccc");
        boolean ret = f.mkdirs();// 与mkdirs的区别 如果上级没有就会创建
        // mkdir 如果上级没有这会报错
        System.out.println(ret);
    }
}
public static void main(String[] args) throws IOException {
        //进行文件改名,也可以视为我们平时的剪切、粘贴操作
        File src = new File("./test2.txt");
        //src.createNewFile();
        File dest = new File("./aaa/test2.txt");
        src.renameTo(dest);
    }
}

   上面就是一些常用File类里面函数的用法,并且每个代码旁边有注释可以去看看。

2.InputStream和 OutputStream

 InputStream和 OutputStream是以字节为单位进行读写,一次最少读写一个字节,而Reader和Writer是以字符单位进行读写。(这几个类的使用非常相似,会用一个,其他也就会了)

 1. InputStream简单用法

public class IODemo7 {
    public static void main(String[] args) throws IOException {
        try (InputStream inputStream = new FileInputStream("./test.txt")){
            while(true){
                byte[] buffer = new byte[1024];
                int n = inputStream.read(buffer);
                if(n == -1){
                    break;
                }
                for(int i = 0; i < n; i++){
                    System.out.printf("%x ", buffer[i]);
                }
            }

        }
    }
}

   这里使用的是try-with,它会自动在我们使用完这个对象自动释放,避免了程序猿忘记释放而导致出现大问题。

2. OutputStream简单用法 

public class IODemo9 {
    public static void main(String[] args) {
        // 如果后面不跟true 下次打开就会重置里面的,如果跟了true只会在后面增加
        // 以字节为单位惊醒读写,一次最少读写一个字节
        try(OutputStream outputStream = new FileOutputStream("./test.txt",true)){
            byte[] buffer = new byte[]{97,98,99,100};
            outputStream.write(buffer);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

   这里注意了后面加了一个true,加了跟没加有很大的区别,加上true的话打开该文本是不会把之前的给清空,继续往上面增加,加不加true,也是看场景是否需要而加上的。

你可能感兴趣的:(java)