博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java核心技术卷I基础知识3.7.3 文件输入与输出
阅读量:6833 次
发布时间:2019-06-26

本文共 1458 字,大约阅读时间需要 4 分钟。

3.7.3 文件输入与输出

要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:

 

如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: “c:\\mydirectory\\myf?ile.txt”。

      注释:在这里指定了UTF-8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用)。读取一个文本文件时,要知道它的字符编码——更多信息参见卷Ⅱ第2章。如果省略字符编码,则会使用运行这个Java程序的机器的“默认编码”。这不是一个好主意,如果在不同的机器上运行这个程序,可能会有不同的表现。

现在,就可以利用前面介绍的任何一个Scanner方法对文件进行读取。

要想写入文件,就需要构造一个PrintWriter对象。在构造器中,只需要提供文件名:

 

如果文件不存在,创建该文件。可以像输出到System.out一样使用print、println以及printf命令。

      警告:可以构造一个带有字符串参数的Scanner,但这个Scanner将字符串解释为数据,而不是文件名。例如,如果调用:

 

这个scanner会将参数作为包含10个字符的数据:‘m’,‘y’,‘f’等。在这个示例中所显示的并不是人们所期望的效果。

      注释:当指定一个相对文件名时,例如,“myf?ile.txt”,“mydirectory/myf?ile.txt”或“../myf?ile.txt”,文件位于Java虚拟机启动路径的相对位置。如果在命令行方式下用下列命令启动程序:

 

启动路径就是命令解释器的当前路径。然而,如果使用集成开发环境,那么启动路径将由IDE控制。可以使用下面的调用方式找到路径的位置:

 

如果觉得定位文件比较烦恼,则可以考虑使用绝对路径,例如:“c:\\mydirectory\\ myf?ile.txt”或者“/home/me/mydirectory/myf?ile.txt”。

正如读者所看到的,访问文件与使用System.in和System.out一样容易。要记住一点:如果用一个不存在的文件构造一个Scanner,或者用一个不能被创建的文件名构造一个PrintWriter,那么就会发生异常。Java编译器认为这些异常比“被零除”异常更严重。在第7章中,将会学习各种处理异常的方式。现在,应该告知编译器:已经知道有可能出现“输入/输出”异常。这需要在main方法中用throws子句标记,如下所示:

 

现在读者已经学习了如何读写包含文本数据的文件。对于更加高级的技术,例如,处理不同的字符编码、处理二进制数据、读取目录以及写压缩文件,请参看卷Ⅱ第2章。

      注释:当采用命令行方式启动一个程序时,可以利用Shell的重定向语法将任意文件关联到System.in和System.out:

 

这样,就不必担心处理IOException异常了。

java.util.Scanner 5.0

Scanner(File f)

构造一个从给定文件读取数据的Scanner。

Scanner(String data)

构造一个从给定字符串读取数据的Scanner。

java.io.PrintWriter 1.1

PrintWriter(String f?ileName)

构造一个将数据写入文件的PrintWriter。文件名由参数指定。

java.nio.f?ile.Paths 7

static Path get(String pathname)

根据给定的路径名构造一个Path。

转载地址:http://nyakl.baihongyu.com/

你可能感兴趣的文章
.Net MVC 用 ajaxfileupload 上传图片
查看>>
阿里云双十一1折拼团活动:已满6人,都是最低折扣了
查看>>
AngularDart4.0 指南
查看>>
js 入门 前端基础之JavaScript
查看>>
Java算法-递推算法思想
查看>>
rust学习记录-控制台整数读取
查看>>
JavaScript变量提升
查看>>
1 mysql索引的实现原理
查看>>
相对和绝对路径 、 cd命令 、创建和删除目录mkdir/rmdir 、 rm命令
查看>>
静态文件过期缓存、Nginx防盗链、访问控制
查看>>
解决Spring扫描实体映射文件报错的问题
查看>>
ConcurrentModificationException
查看>>
webpack-dev-server启动后, localhost:8080返回index.html的原理
查看>>
cookie是什么?作用?生命周期?
查看>>
6月20日任务 mysql用户管理 、常用sql语句、mysql数据库备份恢复
查看>>
阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率
查看>>
MySQL 24小时入门笔记(1),概念
查看>>
Data Lake Analytics IP白名单设置攻略
查看>>
使用无界队列的线程池会导致内存飙升吗?
查看>>
vue.js响应式原理解析与实现—实现v-model与{{}}指令
查看>>