Java自学笔记(18):【IO】File类与字节流

数据流的分类

方向不同:输入流(流入内存)与输出流(流向外存)

按处理数据单位不同分为字节流和字符流

功能不同:节点流和处理流

 

IO流如何操作数据?

本地文件->管道,管道->内存

本地文件:在JAVA中被抽象为Flie类文件

输入管道:在JAVA中被抽象为InputStream(字节流),Reader(字符流)


File类

文件通常是在程序中数据的初始源和目的地,对文件的输入输出操作在编程语言中是普遍存在的

File类是Java.io包下代表与平台无关的文件和目录

File类不属于java流系统,是文件流进行文件操作的辅助类

File类帮助我们在程序中操作文件接和目录 : 新建,删除,重命名(文件和目录)

File本身不能访问文件本身,访问文件本身的是输入输出流

 

文件路径

绝对路径:文件所在位置的完整路径,包括磁盘盘符      D:\\test.tet

相对路径:依据用户的工作空间来解释相对路径,这个路径由系统属性“user.dir”指定,通常也就是运行java虚拟机时所在的路径   image\\test.txt    //注意\需要转义

    File(String pathname):指定文件或者文件夹的路径来创建一个File文件
    File(File parent, String child):根据parent抽象路径和child路径名字符串,创建一个新的File实例
    File(String parent, String child):

File类的对象是一个“文件或目录“的抽象代表

File类对象并不是打开文件或目录,而仅仅是指定要操作的文件或目录,对象一旦被创建,就不能更改,他所代表的路径是不能改变的

import java.io.File;
public class FileDemo {

    public static void main(String[] args) {
        // 判断文件是否存在 演示
        File file = new File("test.txt");        //这是一个相对路径
        if(file.exists())                        //判断文件是否存在
            System.out.println("exist");
        else System.out.println("null");
    }

}

File类的一些方法的总结

(一)访问文件名或路径
1)String getName()  返回File对象所表示的文件名或文件路径
2)String getPath()    返回File对象所对应的相对路径名。
3)File getAbsoluteFile() 返回File对象的绝对路径文件
4)String getAbsolutePath() 返回File对象所对应的绝对路径名
5)String getParent() 返回File对象所对应目录的父目录
6) boolean renameTo(File dest) 重命名File对象的文件或目录
(二)文件检测
1boolean exists()   判断File对象的文件或目录是否存在
2)bool canWrite()     判断File对象是否可写
3)boolean canRead()判断File对象是否可读
4)boolean isDirectory() 判断File对象是否是目录
5)boolean isFile() 判断File对象是否是文件
6)boolean  isAbsolute() 判断File对象是否采用绝对路径
(三)文件信息
1)long length() ; File对象对应文件的长度
2)long lastNodified()   File对象最后修改的时间
(四)文件操作
1)boolean createNewFile() ;      检查文件是否存在,当文件不存在时创建一个新的文件
2) boolean delete()             删除File对象所对应的文件或目录
(五)目录操作
1)boolean mkdir()       创建一个File对象所对应的路径
2)String[] list()         列出File对象所有的子文件名和路径名
3)File[] listFile()     列出File对象的所有子文件或路径
4)static File[] listRoots()   列出系统所有的根路径

import java.io.File;
public class FileDemo2 {

    public static void main(String[] args) {
        // 获取某一个路径下所有目录和文件
        File file = new File("D:/MiKu");
        if(file.isDirectory()) {
            System.out.println("是一个文件夹,内容如下: ");
            String[] names = file.list();
            for(int i=0;i<names.length;i++) {
                System.out.println(names[i]);
            }
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            //获取某一个路径下所有目录和文件的绝对路径
            File[] files = file.listFiles();
            for(int i=0;i<files.length;i++) {
                System.out.println(files[i]);
            }
        }
        else System.out.println("不是文件夹");
    }

}

字节流

 

FileInputStream介绍

常用方法

int available()
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
void close()
关闭此文件输入流并释放与此流有关的所有系统资源。
protected void finalize()
确保在不再引用文件输入流时调用其 close 方法。
FileChannel getChannel()
返回与此文件输入流有关的唯一 FileChannel 对象。
FileDescriptor getFD()
返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此 FileInputStream 使用。
int read()
从此输入流中读取一个数据字节
int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
int read(byte[] b, int off, int len)
从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
long skip(long n)
从输入流中跳过并丢弃 n 个字节的数据。
 
面向不存在的文件创建对象会抛出异常
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamDemo {
    
    public static void main(String[] args) {
        File file = new File("test.txt");
        
        try {
            FileInputStream fis = new FileInputStream(file);
            byte[] content = new byte[fis.available()];
                fis.read(content);   //读取文件
                fis.close();
             
            System.out.println("读取完成!");
            System.out.println(new String(content));
        }catch (FileNotFoundException e) {                //异常处理
            // TODO Auto-generated catch block
            System.out.println("文件不存在!");
            e.printStackTrace();
        }catch (IOException e) {
            System.out.println("读取失败!");
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
}

FileOutputStream介绍

同上~~

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {

    public static void main(String[] args) {
        // 写入
        File file = new File("test.txt");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            String str = "MiKu殿下的骑士";
            fos.write(str.getBytes());
            fos.close();
            System.out.println("输入完毕!");
        } catch (FileNotFoundException e) {  //异常处理
            // 文件找不到
            e.printStackTrace();
        } catch (IOException e) {
            // 输入异常
            e.printStackTrace();
        }
        
    }

}

 

posted @ 2019-08-01 10:23  提莫队长正在送命  阅读(238)  评论(0编辑  收藏  举报