Java文件IO流程

该构造方法根据f抽象路径名和 child 路径名字符串创建一个新 File 实例。语法如下:

new File(File f, String child)

f:父路径对象,如D:/doc/。
child:子路径字符串,如letter.txt。

当使用File类创建一个文件对象后,如果当前目录不存在该路径的文件,那么File类对象可以通过调用createNewFile()方法创建该名称的文件。

获取文件信息

File 类提供了很多方法以获取文件本身的信息,其中常用的方法如表所示。

方法 返回值 说明
getName() String 获取文件的名称
canRead() boolean 判断文件是否为可读的
canWrite() boolean 判新文件是杏可被写入
exists() boolean 判断文件是否存在
length() long 获取文件的名称
getAbsolutePath() String 获取文件的绝对路径
getParent() String 获取文件的父路径
isFile() boolean 获取指定路径名表示的文件是否为一个标准文件
isDirectory() boolean 判断文件是否为一个目录
isHidden() boolean 判断文件是否为隐藏文件
lastModifield() long 获取文件的最后修改时间

读取文本文件的名称、长度和隐藏属性:

import java.io.File;
public class FileTest2 (
    public static void main(Stringi args) {
        File file = new File("D: word.txt");
        if (file.exists()) {
            String name = file.getNamel();
            long length = file.length();
            boolean hidden = file.isHidden;
            System.out.println("文件名称:"+ name);
            System.out.println("文件长度是:"+ length);
            System.out.println("该文件是隐藏文件吗?"+hidden);
} else {
        System.out.println(”该文件不存在”);
        }
    }
}
2.文件输入/输出流
FilelnputStream 类和 FileOutputStream类

FileInputStream类和FileOutputStream类都用来操作磁盘文件。如果用户的文件读取需求比较简单,则可以使用FilelnputStream类,该类继承自InputStream类。FileOutpuSuream类与FilelnputStream类对应,提供了基本的文件写入能力。FileOuputStream类是OutputStream类的子类。
FilelnputStream类常用的构造方法如下:

FileInputStream(String name);
FilelnputStreamFile file);

第一个构造方法使用给定的文件名name创建一个FilelnputStream对象,第二个构造方法使用File对象创建FilelnputStream对象。第一个构造方法比较简单,但第二个构造方法允许在把文件连接到输入流之前对文件做进一步分析。FileOutputStream类具有与FileInputStream类相同的参数构造方法,创建一个FileOutputStream对象时,可以指定不存在的文件名,但此文件不能是一个已被其他程序打开的文件。比如下面的例子:

public class FileStreamDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\word.txt");
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] bytes = "amber".getBytes();
            fileOutputStream.write(bytes);
            fileOutputStream.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            byte[] bytes = new byte[1024];
            int read = fileInputStream.read(bytes);
            System.out.println(new String(byt,0,len));
            fileInputStream.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
} 
FileReaderl类和FileWriter类

使用FileOupuStream类向文件中写入数据与使用FilelnputStream类从文件中将内容读出来,都存在一点不足,即这两个类都只提供了对字节或字节数组的读取方法。由于汉字在文件中占用两个字节,如果使用字节流,读取不好可能会出现乱码现象,此时采用字符流FileReader类或FileWriter类即可避免这种现象。
FileReader类和FileWriter类分别对应了FilelnputStream类和FileOutputStream类。FileReader类顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余的内容,直到源的末尾或流关闭

public static void main(String[] args) {
    File file = new File("D:\\word.txt");
    try {
        FileWriter fileWriter = new FileWriter(file);
        String amber = "amber";
        fileWriter.write(amber);
        fileWriter.close();
    }catch (Exception e){
        e.printStackTrace();
    }
    try {
        FileReader fileReader = new FileReader(file);
        char[] chars = new char[1024];
        int read = fileReader.read(chars);
        System.out.println(new String(chars, 0, read));
    }catch (Exception e){
        e.printStackTrace();
    }
}
3.数据输入/输出流

数据输入/输出流(DataInputStream类与DataOutputStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。也就是说,当读取一个数据时,不必再关心这个数值应当是哪种字节。DataInputStream类与DataOutputStream类的构造方法如下。

  • DataInputStream(InputStream in):使用指定的基础InputStream对象创建一个DataInputStream对象。
  • DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流。
    DataOutputStream类提供了将字符串、double数据、int数据、boolean数据写入文件的方法。

其中,将字符串写入文件的方法有3种,分别是 writeBytes(String s)writeChars(String s)writeUTF(String s)

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78258.html

(0)
guozi's avatarguozi
上一篇 2024年5月29日 下午4:33
下一篇 2024年5月29日 下午4:39

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注