Java-IO 文件操作

File类
File类是Java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建,删除,重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录,文件的长度,文件读写权限等。数据流可以将数据写入到文件中,文件也是数据流最常用的数据媒体。

Demo

import java.io.File;
/*判断D盘的java资料文件夹中是否存在test.txt这个文件
 * 如果存在则删除
 * 如果不存在则创建
 */
public class FileDemo {
    public static void main(String[] args)
    {
        File file=new File("D:\\java资料\\test.txt");  //括号里面写文件路径
        if(file.exists())
        {
            file.delete();
            System.out.println("文件已删除");
        }
        else
        {
            try                                       //用try catch语句块捕捉异常
            {
                file.createNewFile();
                System.out.println("文件创建成功");
            }catch(Exception e)
            {
                e.printStackTrace();
            }
        }

    }

}

获取文件信息
File类的常用方法:直接在代码中展示

import java.io.File;
/*判断D盘的java资料文件夹中是否存在test.txt这个文件
 * 如果存在则删除
 * 如果不存在则创建
 * File类的一些常用方法
 */
public class FileDemo {
    public static void main(String[] args)
    {
        File file=new File("D:\\java资料\\test.txt");  //括号里面写文件路径
        if(file.exists())
        {
            String name=file.getName();  //获取文件名
            long length=file.length();   //获取文件长度
            boolean hidden=file.isHidden();  //判断文件是否是隐藏文件
            String AbsolutePath=file.getAbsolutePath();  //获取文件的绝对路径
            boolean isFile=file.isFile();   //判断是否是文件类型
            boolean isDirectory=file.isDirectory();  //判断是否是目录
            System.out.println("文件名:"+name);
            System.out.println("文件长度:"+length);
            System.out.println("是否是隐藏文件:"+hidden);
            System.out.println("文件的绝对路径是:"+AbsolutePath);
            System.out.println("是否是文件:"+isFile);
            System.out.println("是否是目录:"+isDirectory);
        }
        else
        {
            try                                       //用try catch语句块捕捉异常
            {
                file.createNewFile();
                System.out.println("文件创建成功");
            }catch(Exception e)
            {
                e.printStackTrace();
            }
        }


    }

}

调试结果:
这里写图片描述

字节流
(1)文件输入输出流
FileInputStream和FileOutputStream

(2)带缓存的输入输出流
BufferedInputStream和BufferedOutputStream

(3)数据输入输出流
DataInputStream和DataOutputStream

在计算机中文件是byte 、byte、byte地存储
FileInputStream在读取文件的时候,就是一个一个byte地读取(类似一滴滴水,滴进水缸)
DataInputStream则是在FileInputStream的一个轻量级的包装类(类似一瓢一瓢水,加进水缸)
BufferInputStream则是自带缓冲区,默认缓冲区大小为8X1024 (类似一桶一桶水,倒入水缸),缓存是IO的一种性能优化,有了缓存区,使得流在执行skip(),mark(),reset()方法都成为可能。

FileInputStream和FileOutputStream的Demo

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

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException
    {
        File file=new File("D:\\java资料\\Text.txt");

        FileOutputStream out=new FileOutputStream(file);
        byte buy[]="我有一只小毛驴,我从来也不骑。".getBytes();
        out.write(buy);      //数组中的信息写入到文件中
        out.close();         //将流关闭

        FileInputStream in=new FileInputStream(file);
        byte byt[]=new byte[1024];   //创建一个byte数组
        int len=in.read(byt);        //文件中读取信息
        System.out.println("文件中的信息是:"+new String(byt,0,len));
        in.close();         //关闭流
    }
}

BufferedInputStream和BufferedOutputStream的Demo

/*
*用BufferedInputStream读取Text.txt中的内容
*用BufferedOutputStream将读取的内容写入到WriteText.txt中
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamDemo{
    public static void main(String[] args) throws Exception
    {
        BufferedInputStream bis=null;
        BufferedOutputStream bot=null;
        byte[] buffer=new byte[1024];     //声明一个byte数组存储文本内容
        try{
            bis=new BufferedInputStream(new FileInputStream("D:\\java资料\\Text.txt"));
            bot=new BufferedOutputStream(new FileOutputStream("D:\\java资料\\WriteText.txt"));
            int bytesRead=0;
            //从文件中按字节读取内容,到文件尾部时read方法将返回-1
            while((bytesRead=bis.read(buffer))!=-1)
            {
                String s=new String(buffer,0,bytesRead);   //将buffer转换成字符串打印到控制台
                System.out.println(s);
                bot.write(buffer);   //将byte数组存储的文本内容写入到新建的WriteText.txt中
            }
        }catch(FileNotFoundException e)
        {
            e.printStackTrace();
        }catch(IOException e)
        {
            e.printStackTrace();
        }finally{
            //关流
            try
            {
                if(bis!=null)
                {
                    bis.close();
                }
                bot.flush();
                bot.close();
            }catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

编译结果:
这里写图片描述
这里写图片描述

DataInputStream和DataOutputStream的Demo

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class DataInputStreamDemo{
    public static void main(String[] args)
    {
        try {
            FileOutputStream fos=new FileOutputStream("D:\\java资料\\FlieInput.txt");
            DataOutputStream dos=new DataOutputStream(fos);
            //写入磁盘文件数据,将字符串按照UTF编码后的字节长度写入目标设备,然后才是每一个字节的UTF编码
            dos.writeUTF("使用writeUTF()方法写入数据;");  
            //将字符串中的每一个字符中的俩个字节的内容写到目标设备中
            dos.writeChars("使用writeChars()方法写入数据;");
            //将字符串中的每一个字符的低字节内容写入到目标设备中
            dos.writeBytes("使用writeBytes()方法写入数据;");
            dos.close();
            FileInputStream fis=new FileInputStream("D:\\java资料\\FlieInput.txt");
            DataInputStream dis=new DataInputStream(fis);
            System.out.println(dis.readUTF());    //将文件数据输出
            dis.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

编译结果:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值