Java基础练习题 (6)文件系统

(1)如何创建一个文件夹?
java.io.File 有很多处理文件和文件夹的方法。
创建文件夹如下

File file = new File("E://demo");
file.mkdir();

这样就会在 E 盘创建一个 demo 文件夹,这个方法返回一个布尔值,如果文件夹已存在,就返回 false,否则返回 true。还有一个也是创建文件夹的方法

File file = new File("E://demo/demo1/demo2");
file.mkdirs();

这个方法会把所有需要的文件夹都创建,就是如果你原来只有一个 demo 文件夹,这方法就会将 demo1 和 demo2 都创建。而用第一个方法 mkdir() ,如果 demo1 文件夹不存在,就会创建失败。

(2)如何列出目录下的文件?

File file = new File("E://demo");
if(file.isDirectory()) {
  for(String fileName : file.list()) {
    System.out.println(fileName);
  }
}

这段代码列出 E 盘下 demo 文件夹下的文件和目录。
File 的 list() 方法会返回一个 String[],包括该目录下的文件和文件夹的名字。如果该路径指定的文件不是一个文件夹,这个 list() 方法就会返回一个 null 值,所以我们可以先使用 isDirectory() 方法判断这个 file 是否是一个文件夹。

(3)如何遍历一个目录及其子目录下的所有文件?

public void listFile(File file) {
  File[] files = file.listFiles();
  for(File f : files) {
    if(f.isDirectory()) {
      listFile(f);
    } else {
      System.out.println(f.getName());
    }
  }
}

写了个递归的方法。

public static void main(String[] args) {
  File file = new File("E://demo");
  listFile(file);
}

这样就列出 “E//demo” 里包括子目录的所有文件了。

(4)如何创建一个文件?
创建文件跟创建目录有点类似,有两种方法:

  • 一种是创建一个 File 对象,给定文件路径
File file = new File("E://demo/test.txt");
try {
  file.createNewFile();
} catch (IOException e) {
  e.printStackTrace();
}
  • 一种是使用 File 类的静态方法 createTempFile(prefix, suffix, directory),使用给定的 prefix 、suffix 、directory 分别作为文件的前缀、后缀、目录。
File file = new File("E://demo");
try {
  File.createTempFile("test", ".txt", file);
} catch (IOException e1) {
  e1.printStackTrace();
}

这两个方法当指定的目录不存在是会抛出异常。

(5)如何获取文件的长度?

File file = new File("E://demo/test.txt");
long length = file.length();

length() 方法返回这个文件的字节长度。

(6)如何判断指定的文件是否存在?
用 exists() 方法

File file = new File("E://demo/test.txt");
if(file.exists()) {
  System.out.println("file is exists");
} else {
  System.out.println("file is not exist");
}

(7)如何按照指定的编码向文件中写入文本?
这里我们使用 java.io.OutputStreamWriter 类,

File file = new File("E://demo/test.txt");
OutputStreamWriter out;
try {
  out = new OutputStreamWriter(new FileOutputStream(file), "UTF8"); //指定编码为 "UTF8"
  out.write("hello world"); //写入文本
  out.close();
} catch (IOException e) {
  e.printStackTrace();
}

OutputStreamWriter 类有个构造方法可以在创建的时候指定字符编码,如果不指定,则使用系统的默认编码。注意这里写入文本会覆盖文件原来的文本。

(8)如何在文件末尾追加文本?
java.io.FileWriter 类继承了 OutputStreamWriter 类,它有一个构造方法 FileWriter(File file, boolean append),当 append = true 时,调用 write 方法就会将文本附加到文件末尾。

File file = new File("E://demo/test.txt");
FileWriter out;
try {
  out = new FileWriter(file, true); //追加模式
  out.write("hello world");
  out.close();
} catch (IOException e) {
  e.printStackTrace();
}

(9)如何按行读取文本文件的内容?
我们可以使用 java.io.FileReader 来读取,不过需要写循环一个一个字符读,这样性能太低,所以我们用 BufferedReader 类。从这个类的名字就可以看出它会使用到缓存,这样我们就不用每读一个字符就访问一次文件。

File file = new File("E://demo/test.txt");
BufferedReader in;
try {
  in = new BufferedReader(new FileReader(file));
  String line = in.readLine(); //读取一行,如果已经到达文件结尾就返回 null
} catch (IOException e) {
  e.printStackTrace();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 操作系统引论 学习本章的目的是使学生建立起 OS的基本概念。要求了解OS的引入和发展, 理解多道程序设计技术,掌握操作系统的功能和特征,了解 分层式结构和微内核结构。 第二章 进程和线程 本章的学习目的是使学生建立起进程的概念。进程是 OS中最重要的基本概念,本章是全书中最重要的一章。要求 掌握 进程的概念,进程的状态及其转换, 进程控制原语,用 P、V操作解决进程同步问题,了解进程间的通信, 了解线程的概念。 第三章 死锁 掌握死锁的概念和产生的必要条件,掌握死锁的预防和避免方法,了解银行家算法,死锁的检测及恢复。 第四章 调度 本章的学习目的主要是使学生理解和掌握处理机调度基本概念,要求掌握进程调度、作业调度和常见的调度算法,了解三级调度及其之间的联系。 第五章 存储管理 本章的目的是使学生了解各种存储器管理的方式和它们的实现方法。要求掌握地址重定位、虚拟存贮器、动态链接和共享的概念以及实现方法;掌握分区、页式与请求页式、段式与虚拟段式的实现原理和地址变换。了解段页式存储管理技术,虚存中的置换算法。 第六章 文件系统 本章的学习目的是使学生掌握文件系统的基本概念和实现过程。要求掌握文件的逻辑结构、物理组织及对不同类型文件的存取方法,掌握文件目录, 外存空间管理及文件共享方式, 了解文件系统的概念、文件的使用、文件系统的层次模型。 第七章 设备管理 学习本章的目的是使学生了解操作系统处理用户 I/O请求的基本过程。要求 掌握通道、缓冲、设备独立性的概念,掌握 I/O控制方式及设备驱动程序 ,设备分配的数据结构及分配程序,掌握设备分配技术,设备管理程序功能,理解缓冲技术和Spooling系统及磁盘调度算法。 第八章 中断和信号机制 理解中断的概念,了解中断机构的组成及工作机制,理解系统调用的概念,熟悉系统调用的使用方法,了解信号机制。 第九章 网络操作系统 本章的学习目的是使学生了解网络操作系统和 Windows NT。要求理解网络操作系统提供的功能和服务,并了解客户/服务器模式及Windows NT网络命令。 第十章 分布式操作系统 本章的目的是使学生了解分布式操作系统的基本概念和近期发展动态,了解常见的一些分布式系统及其相关的支持技术和实现方案。 第十一章 安全性与保护机制 本章学习的目的是使学生能初步建立起系统安全性的概念。要求掌握数据加密、数字签名和认证的基本概念,了解访问控制技术和防火墙技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值