【java篇】java语言的IO流(完结)

大家好,今天学习Java语言IO流的完结篇,对Java的输入输出操作以及文件操作做一个总结。一起加油吧!
【java篇】java语言的IO流(完结)_第1张图片

下面是今天要学习的内容:

  • 文件的处理与随机访问
    • Java语言对文件与文件夹的管理
      • 1.创建File类的对象
      • 2.获取文件或文件夹属性
      • 3.文件或文件夹操作
    • 文件的随机访问
    • 总结:


文件的处理与随机访问

计算机程序运行时的数据都是放在内存里的,为了长期的保存数据一般都会把数据存放在磁盘文件里。使用数据时再从磁盘文件里读取。所以说文件的操作是程序必备的功能。

Java语言对文件与文件夹的管理

Java语言中定义了一个File类专门管理磁盘文件和文件夹,并不负责数据的输入输出。每一个File类对象表示一个磁盘文件或者文件夹,对象属性中包含了文件的文件名长度等信息,调用它的方法可以完成磁盘文件和文件夹的操作,如创建删除等。同类文件保存在同一个文件夹下方便管理,提高工作效率。

1.创建File类的对象

创建File类对象时,需要给定文件名或者文件夹名。

构造方法 实现功能
public File(String path) 用path参数创建File类对象所对应的文件或者文件夹及其路径
public File(String path,String name) 以path为路径,以name为文件或者文件夹名创建path对象
public File(File dir,String name) 用已经存在的代表某磁盘文件夹的File类对象dir作为文件夹,以name作为文件或者文件夹名来创建File类对象

注意事项:

  • path可以是相对路径或者绝对路径,还可以是磁盘上的文件夹。
  • 不同操作系统的文件夹分隔符不同,可以使用File的一个静态变量File.separator,该属性中保存了当前系统规定的文件夹分隔符,方便程序在不同的操作系统下运行。例:
"c:"+File.seperator+"java";

2.获取文件或文件夹属性

我们可以通过创建File类对象,调用它的方法实现对文件夹和磁盘文件的属性的访问。

常用方法 功能
public boolean exists() 判断文件或者文件夹是否存在
public String getName() 返回文件名或文件夹名
public String getPath() 返回文件或者文件夹地址
public boolean canRead() 判断文件是否可读
public boolean equals(File f) 比较两个文件或文件夹是否相同

3.文件或文件夹操作

File类中还定义了一些对文件或文件夹进行管理和操作的方法。

常用方法 功能
public boolean renameTo(File newFile) 将文件重命名为newFile对应的文件名
public boolean delete() 将当前文件删除,删除成功返回true,反之发返回false
public boolean mkdir() 创建当前文件夹的子文件夹,成功返回false,反之返回false

文件的随机访问

Java语言还定义了一个功能强大使用方便的随机访问文件类RandomAccessFile类(java.io包中),实现对文件的随机读写,且可以用于任意文件随意位置的访问。

构造方法 功能
public RandomAccessFile(String name,String mode) mode表示对文件的访问模式,用name来指定随机文件流对象所对应的文件名。
public RandomAccessFile(File file,String mode) mode表示对文件的访问模式,用file来指定随机文件流对象所对应的文件名。

mode表示所创建的随机读写文件的操作状态,取值有:

  • r—只读的方式打开文件
  • rw—读写的方式打开文件,只需要一个对象就可以实现读和写的操作

同样RandomAccessFile类中定义很多方法用于文件的读写操作,详细参见Java API。且使用时都可能抛出IOException异常,必须放在try-catch语句中使用。

在创建一个随机访问文件流对象时,该文件处于打开状态。文件的指针处于文件开始的位置,可以通过seek()方法设置文件指针的当前位置。而后通过reader()和writer()方法进行读写。操作完成后,调用close方法关闭文件。

import java.io.*;
public class A_1 {
    public static void main(String[] args)throws IOException{
        StringBuffer stfDir=new StringBuffer();
        System.out.println("请输入文件所在的路径");
        char ch;
        while((ch=(char)System.in.read())!='\r')
            stfDir.append(ch);
        File dir=new File(stfDir.toString());
        System.out.println("请输入欲读取的文件名");
        StringBuffer stfFileName=new StringBuffer();
        char c;
        while((c=(char)System.in.read())!='\r')
            stfDir.append(c);
        stfFileName.replace(0,1,"");
        File readFrom=new File(dir,stfFileName.toString());
        if(readFrom.isFile()&&readFrom.canWrite()&&readFrom.canRead()){
            RandomAccessFile rafFile=new RandomAccessFile(readFrom,"rw");
            while(rafFile.getFilePointer()<rafFile.length())
                System.out.println(rafFile.readLine());
            rafFile.close();
        }
        else 
            System.out.println("文件不可读!");
    }
    
}

总结:

Java语言以流的方式处理输入输出,其好处是,无论采用什么样的形式输入输出,只是针对流做处理。


文章的不足之处,欢迎指正!

你可能感兴趣的:(Java编程,进阶之路,java,开发语言)