Java IO流(简单不完全版本)

1 File类

File:用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

1.1 File类的静态成员变量


import java.io.File;
public class Demo01 {
    public static void main(String[] args) {
        System.out.println(File.pathSeparator);     //路径分隔符,在windows中为" ; " 。linux系统中为" : "。
        System.out.println(File.separator);         //文件名分隔符,windows中为" \ "。;linux系统中为" / "。

        /*
        *   若要写同时兼容两个系统的代码,路径应参考下面方法:
        *   目标路径: C:\Temp
        *   (或)目标路径: C:/Temp
        *   "C" + File.separator + File.pathSeparator + "Temp"
        * */
    }
}
/*运行结果:

;
\

进程已结束,退出代码为 0

*/

1.2 Flie的构造方法

import java.io.File;

public class Demo02 {
    public static void main(String[] args) {
        File f1 = new File("D:\\下载\\HelloWorld.txt");
        File f2 = new File("D:\\下载","HelloWorld.txt");
        File f3 = new File(new File("D:\\下载"),"HelloWorld.txt");
        //展示了File类的三种创建方法(构造器)
        System.out.println(f1 + "\n" + f2 + "\n" + f3);
    }
}
/*运算结果:

D:\下载\HelloWorld.txt
D:\下载\HelloWorld.txt
D:\下载\HelloWorld.txt

进程已结束,退出代码为 0

*/

1.3 File类的常用方法

文件名相关:

import java.io.File;

public class Demo03 {
    public static void main(String[] args) {
        File f1 = new File("D:\\下载\\HelloWorld.txt");
        System.out.println(f1.getName());
        System.out.println(f1.getAbsoluteFile());
        System.out.println(f1.getPath());
        System.out.println(f1.toString());          //toString所调用的就是getPath()方法
        System.out.println(f1.getParent());
        System.out.println(f1.renameTo(new File("1.txt")));
        /*
            String getName():返回此File对象所表示的文件名或路径名(如果是路径,则返回最后一级子路径名)。
            String getPath():返回此File对象所对应的路径名。
            File getAbsoluteFile():返回此File对象的绝对路径。
            String getAbsolutePath():返回此File对象所对应的绝对路径名。
            String getParent():返回此File对象所对应目录(最后一级子目录)的父目录名。
            boolean renameTo(File newName):重命名此File对象所对应的文件或目录,如果重命名成功,则返回true;否则返回false。
        * */
    }
}
/*运行结果:

HelloWorld.txt
D:\下载\HelloWorld.txt
D:\下载\HelloWorld.txt
D:\下载\HelloWorld.txt
D:\下载
false

进程已结束,退出代码为 0

*/

判断相关:

public class Demo04 {
    public static void main(String[] args) {
        File f1 = new File("D:\\下载\\HelloWorld.txt");
        System.out.println("是否存在:" + f1.exists());
        System.out.println("是否为文件夹:" + f1.isDirectory());
        System.out.println("是否为文件:" + f1.isFile());
        System.out.println("是否可读:" + f1.canRead());
        System.out.println("是否可写:" + f1.canWrite());
        System.out.println("文件大小:" + f1.length());

        /*
                是否存在:exists()
		        是否是文件夹:isDirectory());
		        是否是文件:isFile()
		        文件是否可写:canWrite()
		        文件是否可读:canRead()
		        是否是绝对路径:isAbsolute()
		        文件长度:src1.length()// 文件的长度(字节数),文件夹没有大小概念,不能获取文件夹大小。若文件不存在,输出0
        * */
    }
}
/*运行结果:

是否存在:true
是否为文件夹:false
是否为文件:true
是否可读:true
是否可写:true
文件大小:5

进程已结束,退出代码为 0

*/

创建相关:

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

public class Demo05 {
    public static void main(String[] args) {
        File f1 = new File("D:\\下载\\Hello.txt");
        try {
            f1.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        boolean b = f1.delete();
        System.out.println("是否删除成功:" + b);
        File f2 = new File("D:\\下载\\a");
        boolean b3 = f2.mkdir();
        System.out.println("文件名是否创建成功:" + b3);
        boolean b4 = f2.delete();
        System.out.println("文件夹是否删除成功:" + b4);
        

        /*
                    createNewFile():创建文件,当且仅当具有此名称的文件不存在时创建一个空文件,返回值类型为布尔值。
                    其声明抛出异常,需对其处理。
                    delete():删除文件/文件夹,返回布尔值(不会出现在回收站)
                    mkdir():可以创建单级空文件夹
                    mkdirs():可以创建一个单/多级空文件夹
        * */
    }
}
/*运行结果:

是否创建成功:true
是否删除成功:true
文件名是否创建成功:true
文件夹是否删除成功:true

进程已结束,退出代码为 0

*/

遍历(文件夹)目录功能

public class Demo08 {
    public static void main(String[] args) {
        File f1 = new File("D:\\下载\\新建文件夹");
        String[] s1 = f1.list();
        for (String s : s1) {
            System.out.println(s);
        }
        File fs1[] =f1.listFiles();
        for (File file : fs1) {
            System.out.println(file);
        }
        File f2 = new File("D:\\下载\\新建文件夹\\稻香.mp3");
        String[] s2 = f2.list();
        for (String s : s2) {
            System.out.println(s);
        }

        /*
        *       public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录
        *       public File[] listFiles():返回一个File数组
        *       若构造方法中的路径不是一个目录,或者路径不存在,会抛出空指针异常
        * */
    }
}
/*运行结果:

告白气球.mp3
稻香.mp3
D:\下载\新建文件夹\告白气球.mp3
D:\下载\新建文件夹\稻香.mp3
Exception in thread "main" java.lang.NullPointerException
	at com.IO.Demo08.main(Demo08.java:18)

进程已结束,退出代码为 1

*/

2 IO流

2.1 IO流概述

“I”指的是input(读取)
“O”指的是output(写入)
流,指数据。流又分为字节流和字符流。

2.2 FileInputStream(字节输入流)FileOutputStream(字节输出流)

可以通过字符串类型创建输入流对象,也可以使用一个文件对象来创建一个输入流对象来读取文件。(输出流与其相同)

InputStream f = new FileInputStream("C:/java/hello");

File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);

例子:

import java.io.*;

public class Demo09 {
    public static void main(String[] args) throws IOException{
        File f = new File("D:\\下载\\新建文件夹\\a.txt");
        OutputStream fos = new FileOutputStream(f);
        byte[] write ={99,88,77,66};
        for (int i : write) {
            fos.write(i);
        }
        fos.close();
        InputStream fis = new FileInputStream(f);
        int size = fis.available();

        for (int i = 0; i < size; i++) {
            System.out.print((char) fis.read() + "  ");
        }
        fis.close();

        /*
        *       字节输入流的使用步骤:
        *           1.创建一个FileInputStream对象
        *           2.调用FileInputStream对象中的方法read方法,读取数据
        *           3.释放内存,调用close方法
        *       (输出流与其相似,案例如上)
        * */
    }
}
/*运行结果:

c  X  M  B  
进程已结束,退出代码为 0

*/

追加写:
若要使文件可以被多次输入,则在创建时应该注意FileOutputStream创建时在其后加入ture
例子:

File f = new File("D:\\下载\\新建文件夹\\a.txt");
        OutputStream fos = new FileOutputStream(f,true);

2.3 字节流

一个字节一个字节的读写,效率非常低。当通过流的方式拷贝文件时,定义了一个字节数组作为缓冲区。在拷贝文件时,可以一次性读取多个字节的数据。

import java.io.*;
public class Demo11 {
    public static void main(String[] args) throws IOException{
        long start = System.currentTimeMillis();
        method("D:\\下载\\新建文件夹\\稻香.mp3","D:\\下载\\b.mp3");

        long end = System.currentTimeMillis();
        System.out.println("用时:" + (end-start) + "毫秒");
    }
    public static void method(String src1 , String src2)throws IOException {
        BufferedInputStream bis =new BufferedInputStream(new FileInputStream(src1));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(src2));
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes))!=-1){
            bos.write(bytes,0,len);
        }
        bis.close();
        bos.close();
    }
}
/*运行结果:

用时:8毫秒

进程已结束,退出代码为 0

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值