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 newDirectoryStream(Path path)

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

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

Path parent = ...

try (DirectoryStream children =Files.newDirectoryStream(parent))

{

for (Path child: children){

System.out.println(child);

}

}catch (IOException e){

e.printStackTrace();

}

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 readAllLines(Path path,java.nio.charset.Charset charset)throws java.io.IOException

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

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

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

public static Path write(Path path,java.lang.Iterablelines,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频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值