JAVA语言的输入和输出实例讲解
小标 2019-01-09 来源 : 阅读 1352 评论 0

摘要:本文主要向大家介绍了JAVA语言的输入和输出实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言的输入和输出实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


在java中,文件或则目录习惯上是用java.io.File对象来表示,但是File类存在一定的缺陷,所以Java7中在NIO2包中带来了更好的替代:java.nio.file.Path接口。



java.nio.file包中还有另一个成员FileSystem类,FileSystem类表示文件系统,是个抽象类,可以调用FileSystem类的getDefault()静态方法来获取当前的文件系统:FileSystem fileSystem = FileSystems.getDefault();


FileSystem中含有其他方法:


getSeprator方法返回String的名称分隔符 getRootDirectories返回用于迭代根目录的Iterable getPath用来创建Pathpublic abstract Path getPath(String first,string... more)first参数是必须的。


用例:Path path = FileSystem.getDefault().getPath("/home/user/images");或则Path path =FileSystems.getDefault().getPath("/home","user","images");



不过java.nio.file.Paths类提供了一个快捷方法,可以通过他的静态get方法来创建PathPath path1=Paths.get("C:\temp");


Path中的getNameCount方法返回路径中名称的数量, 用getName可以检索到每个名称 Path getFileName()返回当前路径的文件名 Path getParent() Path getRoot()



java.nio.file.Files是个强大的类,提供了处理文件和目录以及读取文件和写入文件的静态方法


1.创建和删除文件和目录


创建文件:


public static Path createFile(Path file,java.nio.file.attribute.FileAttribute ... attrs)

   


如果不存在父目录,createFile就会抛出一个IOException,如果已经存在由file指定名称的文件、目录或者符号链接,就会抛出一个FileAlreadyExistsException。


创建目录:


public static Path createDirectory(Path directory,java.nio.file.attribute.FileAttribute... attrs)

   


删除文件、目录或者符号链接


public static void delete(Path path)

   


如果path不存在,则会抛出NoSuchFileException。删除路径时,必须检测路径是否存在,用deletIfExists


public static void deleteIfExists(Path path)

   


如果正在删除的目录不是空的,抛出DirectoryNotEmptyException


2.检索目录的对象


用File类的newDirectoryStream方法来检索目录中文件、子目录和符号链接,这个方法将返回一个DirectoryStream来迭代目录中所有的对象。newDirectoryStream方法


public static DirectoryStream<path> newDirectoryStream(Path path)</path>

   


此方法返回DirectoryStream使用后必须关闭


用例——输出一个目录中的所有的子目录和文件


Path parent = ...

try (DirectoryStream<path> children =Files.newDirectoryStream(parent))

{

    for (Path child: children){

        System.out.println(child);

    }

}catch (IOException e){

    e.printStackTrace();

}</path>

   


3.复制和移动文件


public static Path copy(Path source,Path target

   


CopyOption是java.nio.file中的一个接口,StandardCopyOption枚举是他的一个实现有三个复制选项


ATOMIC_MOVE,将移动个文件作为原子文件系统操作 COPY_ATTRIBUTES把属性复制给新文件 REPLACE_EXISTING如果文件存在,替换他


public static Path move(Path source ,Path target,CopyOption... options)throws java.io.IOException

   


4.文件的读取和写入


readAllBytes和readAllLines方法分别用来从二进制和文本文件读取


public static byte[] readAllBytes(Path path)throws java.io.IOException

public static List<string> readAllLines(Path path,java.nio.charset.Charset charset)throws java.io.IOException</string>

   


用write分别来写入二进制文件和文本文件


public static Path write(Path path,byte[] bytes,

        OpenOption... options)throws java.io.IOException

 

public static Path write(Path path,java.lang.Iterable<!-- extends

        CharSequences-->lines,java.nio.charset.Charset charset,

        OpenOption... options)throws java.io.IOException

   


OpenOption接口提供下面这些值:


APPEND要写入的数据添加到文件末尾 CREATE不存在就创建一个新文件 CREATE_NEW已经存在就创建一个新文件并且抛出异常 DELETE_ON_CLOSE关闭时删除文件 DSYNC文件内容更新时会同步写入 READ打开文件进行读取 SPARSE稀疏文件 SYNC指示文件内容和元素据的更新会同步写入 TRUNCATE_EXISTING如果文件打开进行写入,并且文件已经存在,就把文件的长度缩短到0 WRITE写入


java.nio.charset是个表示字符集的抽象类,需要指定在字符编码成字节和字节解码成字符是使用的字符集。


创建Charset最容易的方法是调用静态Charset.forName传递字符集名称。例如


Charset useAscii = Charset.forName("US-ASCII");

   



输入输出流


根据数据的方向不同,有输入输出流,用输入流从接收端读取,用输出流写入接收端。流用java.io包中的四个抽象类来表示


Reader从接收端读取字符的流 Write将字符写入接收端的流 InputStream从接收端读取二进制数据的流


OutStream将二进制数据写入接收端的流


使用流的典型操作顺序如下:


创建流,生成的对象已经打开,因此不用调用open方法


执行读取或者写入操作


通过调用close方法关闭流,由于目前大多数流类都实现java.lang.AutoCloseable因此可以可以用try-with-resource语句创建流,并且让流自动关闭


……写的好累,以后再慢慢补充吧


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程