Java中File类以及初步认识流

1、File类操作文件或目录属性

(1)在Java程序中通过使用java.io包提供的一些接口和类,对计算机中的文件进行基本的操作,包括对文件和目录属性的操作、对文件读写的操作;

(2)File对象既可以表示文件,也可以表示目录,在程序中一个File对象可以代表一个文件或目录;

(3)利用File类可以来对文件或目录进行基本操作。它可以查出与文件相关的信息,如名称、最后修改日期、文件大小等;

(4)File类的常用构造方法如下所示:

        1)File (String pathname):用指定的文件路径构造文件;

        2)File(String dir,String subpath):在指定的目录下创建指定文件名的文件,dir参数指定目录路径,subpath参数指定文件名;

        3)File(File parent,String subpath):根据一个文件对象和一个字文件构造文件对象,parent参数指定目录文件,subpath参数指定文件名。

(5)File类的常用方法如下所示:

        1)boolean exists():测试文件是否存在;

        2)String getAbsolutePath():返回此对象表示的文件的绝对路径;

        3)String getName():返回此对象表示的文件的名称;

        4)String getParent():返回此File对象的路径的上一级,如果路径名没有上一级,则返回null;

        5)boolean delete():删除此对象指定的文件;

        6)boolean createNewFile():创建空文件,不创建文件夹;

        7)boolean isDirectory():测试此File对象表示的是否是目录;

        8)boolean mkdir():创建一个目录,它的路径名由当前File由当前File对象指定;

        9)boolean mkdirs():创建包括父目录的目录

关于使用File类的相关代码:

import java.io.File;

public class FileTest {

    public static void main(String[] args) {

        File file1 = new File("F:\\a.txt");
        File file2 = new File("F:/demo");

        // boolean exists()测试此抽象路径名表示的文件或目录是否存在。如果存在返回true,如果不存在返回false
        boolean result1 =file1.exists();
        System.out.println("file1对象指向的文件存在:"+result1);
        System.out.println("file2对象指向的目录存在:"+file2.exists());

//        boolean isDirectory()测试此抽象路径名表示的文件是否是一个目录。
//        boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件。
        System.out.println("file1对象指向的是一个文件:"+file1.isFile());//true
        System.out.println("file1对象指向的是一个目录:"+file1.isDirectory());//false
        System.out.println("file2对象指向的是一个文件:"+file2.isFile());//false
        System.out.println("file2对象指向的是一个目录:"+file2.isDirectory());//true

        // String getName() 返回由此抽象路径名表示的文件或目录的名称。
        System.out.println("file1对象指向的文件名称:"+file1.getName());//a.txt
        System.out.println("file2对象指向的目录名称:"+file2.getName());//demo

//        boolean delete()删除此抽象路径名表示的文件或目录。删除成功返回true,删除失败,返回false
        System.out.println("file1对象指向的文件删除成功:"+file1.delete());
        System.out.println("file2对象指向的目录删除成功:"+file2.delete());



    }

2、认识Java的流

(1)读文件是指把文件中的数据读取到内存中;

(2)写文件是把内存中的数据写到文件中;

(3)Java程序通过来读写文件;

(4)流是指一连串流程的字符,是以先进先出的方式发送和接收数据的通道

(5)流分为输入流和输出流,输入/输出流是相对于计算机内存来说的,如果数据输入到内存,则为输入流,如果从内存中输出则为输出流;

(6)Java的输出流主要有OutputStream类和Writer类作为基类,输入流主要由InputStream类和Reader类作为基类;

(7)在java.io包中,封装了许多输入/输出流的API,在程序中,这些输入/输出流类的对象称为流对象;

(8)可以通过流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存;

(9)构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流关联的是源数据源;输出流关联的是目标数据源;

(10)输入/输出流又分为字节流和字符流两种形式:

        1)字节流是8位通用字节流,其基本单位是字节。字节流的基类是InputStream类和OutputStream类,它们是抽象类。

        2)字符流是16位Unicode字符流,基本单位是Unicode字符。字符流最适合用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言。字符流的基类是Reader类和Writer类,它们是抽象类。

(11)一个被访问的流基本特征都是通过实现InputStream类、OutputStream类、Reader类和Writer类这4个抽象类的方法建立的。

(12)InputStream类常用方法如下:

        1)int read():从输入流中读取下一个字节数据;

        2)int read(byte[ ] b):从输入流中读取数据,并将数据存储在缓冲区数组b中,返回实际读取的字节数;

        3)int read(byte[] b,int off,int len):从输入流中读取最多len长度的字节,保存到字节数组中,保存的位置从off开始;

        4)void close():关闭输入流。

InputStream类的常用子类有FileInputStream,用于从文件中读取数据。

(13)OutputStream类常用方法如下:

        1)void write():将指定的字节数据写入此输入流中;

        2)void write(byte[ ] buf):将数组buf中的所有字节写入此输出流中;

       3)void write(byte[ ] b,int off,int len):将字节数组中从偏移量off开始的长度为len的字节数据输出到输出流中;

       4)void close():关闭输出流;

OutputStream类的常用子类有FileOutputStream,用于向文件写数据。

(14)Reader类常用方法如下:

        1)int read(byte[ ] c):从输入流中最多读取c.length个字符,保存到字符数组c中,返回实际读取的字符数;

        2)int read(char[ ] c,int off,int len):从输入流中读取最多len个字符,保存到字符数组c中,保存的位置从off开始,返回实际读取的字符数;

        3)void close():关闭流。

Reader类的常用子类有BufferedReader,接受Reader对象作为参数,并对其添加字符缓冲器。

(15)Writer类常用方法如下:

        1)void write(String str):将str字符串里包含的字符输出到指定的输出流中

        2)void write(String str,int  off,int len):将str字符串里从off位置开始,长度为len的多个字符输出到输出流中;

        3)void close():关闭输出流;

        4)void flush():刷新输出流。

Writer类的常用子类有BufferedWrite,用于将数据缓冲到字符输出流。

(16)在操作上字节流和字符流还有一个区别,字符流在操作时使用了缓冲区(内部存储器),而字节流在操作时直接操作文件,不会使用缓冲区;

(17)流中的方法在出现错误时都会抛出IOException异常。

关于InputStream的相关代码:

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

public class FileInputStreamTest {

    public static void main(String[] args) throws IOException {
        //创建一个File类对象
        File file = new File("F:/test.txt");

        //创建FileInputStream类对象
        FileInputStream fileInputStream = new FileInputStream(file);

        //通过fileInputStream对象调用方法从file对象指向的文件中读取数据
//        int read(byte[] b)从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

        //创建一个byte类型的数据
        byte[] bytes = new byte[1024];
        int num =fileInputStream.read(bytes);
        System.out.println("从流中读取的字节数:"+num);
        //遍历bytes数组,输出数组中存储的数据
        for (int i =0;i<num;i++){
            System.out.print((char)bytes[i]);
        }

        fileInputStream.close();

    }
}

关于OutputStream的相关代码:

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

public class FileOutputStreamTest {

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

        FileOutputStream fileOutputStream = new FileOutputStream("F:/test.txt",true);
        //通过fileOutputStream对象调用方法向F:/test.txt文件中写入数据

        //将数据字符串“asdfghjkl”写入文件中
        String str = "asdfghjkl";
        //将字符串转换为byte类型的数组
        byte[] bytes =str.getBytes();
        fileOutputStream.write(bytes);
        System.out.println("数据写入完毕");
        //关闭流
        fileOutputStream.close();

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值