Java中的输入输出流

File类

File对象主要用来获取文件本身的信息

        创建File对象的构造方法有三个方法

        1.File(String filename)

        2.File(String directoryPath,String filename)

        3.File(File f,String filename)

        注:filename为文件名字,daitectoryPath为文件路径,f是指定成一个目录文件

                使用File(String filename)创建文件时,该文件被认为与当前应用程序在同一路径

1.文件的属性

  •  public String getName():获取文件名字
  • public boolean canRead():判断文件是否可读
  • public boolean canWrite():判断文件是否可写
  • public boolean exists():判断文件是否存在
  • public long length():获取文件长度(单位:字节)
  • public String getAbsolutePath():获取文件绝对路径
  • public String getParent():获取文件父目录
  • public boolean isFile():判断文件是否是一个普通文件
  • public boolean  isDirectory():判断文件是否是一个目录
  • public boolean isHidden():判断是否为隐藏文件
  • public long lastModified():获取文件最后修改时间(时间从1970年午夜至文件最后修改时刻的毫秒数)

例:

import java.io.File;

public class Filetext {
    public static void main(String[] args) {
        File f1 = new File("F:\\瑞吉外卖\\Mavenproject\\homework\\src","Filetext.java");
        System.out.println(f1.getName()+"是可读的吗?"+f1.canRead()+"可以被写入吗?"+f1.canWrite());
        System.out.println(f1.getName()+"的长度"+f1.length());
        System.out.println(f1.getName()+"是普通文件吗?"+f1.isFile());
        System.out.println(f1.getName()+"是目录吗?"+f1.isDirectory());
        System.out.println(f1.getName()+"最后修改时间"+f1.lastModified());
    }
}


/*
运行结果:
Filetext.java是可读的吗?true可以被写入吗?true
Filetext.java的长度620
Filetext.java是普通文件吗?true
Filetext.java是目录吗?false
Filetext.java最后修改时间1680312070213
*/

目录

import java.io.File;
import java.io.FilenameFilter;

public class homework3 {
    public static void main(String[] args) {
        File dir = new File("F:\\瑞吉外卖\\Mavenproject\\homework\\src");
        FileAccept fileAccept = new FileAccept();
        fileAccept.setExtendName("java");
        String filename[] = dir.list(fileAccept);//以字符串形式返回目录下的指定类型的所有文件
        //String filename[] = dir.listFiles(fileAccept) 用File对象形式返回目录下的指定类型的所有文件
        for (String name : filename) {
            System.out.println(name);
        }
    }
}

class FileAccept implements FilenameFilter {
    private String extendName;

    public void setExtendName(String s) {
        extendName = "." + s;
    }

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(extendName);
    }
}

文件的创建与删除

扫描二维码关注公众号,回复: 14786234 查看本文章
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class homework5 {
    public static void main(String[] args) {
        byte[] a="新年快乐".getBytes();
        byte[] b="Happy New Year".getBytes();
        File file = new File("E:\\桌面\\JAVA", "main.txt");
        try {
            if (file.createNewFile()/*如果不存在该文件,调用createNewFile()方法进行创建*/) {
                System.out.println("文件创建成功");
                OutputStream out = new FileOutputStream(file);
                out.write(a);
                System.out.println("a写入成功");
                out=new FileOutputStream(file,true);
                out.write(b,0,b.length);
                System.out.println("b写入成功");
            }
            System.out.println("删除文件"+file.getName()+file.delete()+"成功");//文件创建成功后运行delete()方法进行删除操作
        } catch (IOException e) {
            System.out.println(e);
        }

    }
}

/*
* 运行结果:
* 文件创建成功
   a写入成功
   b写入成功
   删除文件main.txtfalse成功
* */

运行可执行文件

import java.io.File;

public class homework4 {
    public static void main(String[] args) {
        try {
            Runtime ce=Runtime.getRuntime();//调用getRuntime()静态方法创建对象
            File file = new File("C:\\Program Files (x86)\\Microsoft\\Edge\\Application","msedge.exe");//指定可执行文件的路径
            ce.exec(file.getAbsolutePath());//打开可执行文件
        } catch (Exception e) {
            System.out.println(e);
        }

    }
}

//运行结果为:打开电脑的Edge浏览器

文件字节流

创建文件字节输入

输入流

FileInputStream(String name) //使用给定的文件名name创建FileInputStream对象
FileInputStream(File file) //使用File对象创建FileInputStream对象

注:当使用文件输入流构造方法建立通往文件的输入流时,可能会出现错误(即 异常)。例:试图打开的文件不存在时,需要用try...catch进行捕获

int read(byte b[]) //从文件读取b.length字节

int(byte b[],int off,int len)//读取len字节,并将读取的字节存放在数组b中,off是首字节在数组中的存放位置

输出流

FileOutputStream(String name) //使用给定的文件名name创建FileInputStream流
FileOutputStream(File file) //使用File对象创建FileInputStream流

public void write(byte b[])//写b.length字节到文件

public void write(byte b[],int off,int len)//从给定字节数组中起始偏移量off处写len字节到文件,b是存放了数据的字节数组,off为数据的起始偏移量,len为写出的字节数

注:FileOutputStream创建输出流时,可以选择是否刷新文件:

FileOutputStream(String name,boolean append) 
FileOutputStream(File file,boolean append) 

如果append取值为true,输出流不会刷新所指向的文件(假如文件已存在),输出流的write的方法将从文件的末尾开始向文件写入数据;如果append取值为false,输出流将刷新所指向的文件(假如文件已存在,使得文件长度为0)

使用输入输出流最后要记得关闭,通过调用close()方法。

猜你喜欢

转载自blog.csdn.net/qq_62048901/article/details/129892380