File类的用法和InputStream OutputStream

目录:

1.File类的用法

2.InputStream OutputStream


一.File类的用法

文件系统提供了一个File类来表示一个文件。

1.文件相关操作

构造文件(基于一个路径来构造)

File(File parent,String child);

File(String pathname);

File(String parent,String child);

(以上parent,child,pathname 既可以是绝对路径,也可以是相对路径)

文件的相关方法

file.getParent();//返回父目录文件路径
file.getName();//返回纯文件名称
file.getPath();//返回文件路径
file.getAbsoluteFile();//返回绝对路径
file.getCanonicalPath();//返回修饰过的绝对路径
file.exists();//文件是否真实存在
file.isDirectory();//是否是目录
file.isFile();//是否是文件
file.delete();//删除文件
file.deleteOnExit();//标注文件将被删除,删除动作在JVM运行结束时执行
file.createNewFile();//自动创建空文件,创建成功后返回true
String[] list[];//返回File对象目录下所有的文件名
File[] listFiles();//返回目录下所有文件名,以File对象表示
mkdir();//创建目录
mkdirs();//创建目录,如果必要会创建中间目录
renameTo(File dset());//文件改名
canRead();//是否可读
canWrite();//是否可写

二.InputStream OutputStream

文件内容操作:(1)打开文件;(2)关闭文件;(3)读文件;(4)写文件

在读写文件之前务必要打开文件,读写文件完毕之后务必要关闭文件。

读写文件的类:(1)字节流InputStream  OutputStream     (2)字符流Reader Writer

什么叫流?

如果将流比作水龙头,想接100ml的水,你可以接100ml,一次接完;也可以接50ml,两次接完...

那么在流的概念里就是读/写100个字节的数据,可以读/写100个字节,一次执行;也可以读/写50字节,两次执行...

那么字节流就是以字节为单位的流,用来操作二进制文件;字符流就是以字符为单位的流,用来操作文本文件。

InputStream相关操作:InputStream不能直接实例化,需要使用子类FileInputStream用来读写文件,构造方法传入一个路径来打开文件,read方法来读文件,close方法关闭文件。

读文件:

public class demo6 {
    //使用InputStream
    public static void main(String[] args) throws IOException {
        //打开文件
        InputStream inputStream = new FileInputStream("./txt2.txt");
        //2.读取文件
        /* while(true){
            //无参数版本 返回一个int 其实是byte 读完返回-1
            int b = inputStream.read();
            if(b == -1){
                //文件读完了
                break;
            }*/

            byte[] b = new byte[1024];
            //把读取的内容放入一个数组中
            int len = inputStream.read(b);
            for(int i=0;i<len;i++) {
                System.out.println(b[i]);
            }
            b = new byte[1024];
            //把读取内容从off位置开始放入数组中 共放len个元素
            int len2 = inputStream.read(b,1,3);
            for(int i =0;i<len2;i++){
                System.out.println(b[i+1]);
            }
        //3.关闭文件
        inputStream.close();
    }
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class demo8 {
    //文本文件的简单写法
    public static void main(String[] args) throws IOException {
        InputStream inputStream = new FileInputStream("./txt2.txt");
        Scanner scanner = new Scanner(inputStream);
        String s = scanner.next();
        System.out.println(s);
        inputStream.close();
    }
}

PCB有一个属性是文件描述符,这个表是一个数组,每个元素都对应这当前进程打开的文件,这个数组的下标就称为“文件描述符”。每次打开文件都会在文件描述符里占用一个位置,每次关闭文件都会释放一个文件。但是文件描述符是存在上线的,如果一个进程一直在打开文件没有释放,就会导致进程在后续打开的时候打开文件失败。

写文件:

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

public class demo10 {
    public static void main(String[] args) {
        //每次都会清空再进行写操作
        try(OutputStream outputStream = new FileOutputStream("./txt2.txt")){
            //outputStream.write('h');
            //outputStream.write('e');
            //outputStream.write('l');
            //outputStream.write('l');
            //outputStream.write('0');
            String s = "hello java";
            outputStream.write(s.getBytes());

        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

public class demo12 {
    public static void main(String[] args) {
        try(OutputStream outputStream = new FileOutputStream("./txt2.txt")){
            PrintWriter printWriter = new PrintWriter(outputStream);
            printWriter.println("hello");
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值