深入理解JAVA I/O系列一:File_java file操作

createh52周前 (03-03)技术教程8

I/O简介

I/O问题可以说是当今web应用中所面临的的主要问题之一,大部分的web应用系统的瓶颈都是I/O瓶颈。这个系列主要介绍JAVA的I/O类库基本架构、磁盘I/O工作机制、网络I/O工作机制以及NIO的工作方式。

从1.4版本开始JAVA引入了NIO,用来提升I/O性能。I/O操作类在包java.io下,大概有将近80个类,这些类可以分为如下四组:

基于字节操作的I/O接口:InputStream和OutputStream

基于字符操作的I/O接口:Reader和Writer

基于磁盘操作的I/O接口:File

基于网络操作的I/O接口:Socket

从字面意思理解,前两组主要是传输数据的格式,后两组是传输数据的方式。虽然Socket类并不在java.io包下,但是我们仍然将其归类在一起来讨论。因为我个人认为I/O的核心问题要么是数据格式影响I/O操作,要么是传输方式影响I/O操作。最终的问题也就是将什么样的数据写到什么地方的问题。

File类

本篇文章主要介绍File类的一些常用方法,首先来看下一些重要的概念:

1、一个File类的对象,表示磁盘上的文件或目录。

2、File提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

3、File类直接处理文件和文件系统。

4、File类没有指定信息怎样从文件读取或向文件存储。

 1 package io;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 public class FileTest
 7 {
 8     public static void main(String[] args) throws IOException
 9     {
10         File file = new File("f:/migu");
11         file.mkdir;
12         //判断该抽象名表示的目录是否存在
13         if(file.exists && file.isDirectory)
14         {
15 System.out.println("migu 目录存在");
16 File file1 = new File("f:/migu/UES.txt");
17 File file2 = new File("f:\\migu\\CMU.txt");
18 //创建文件
19  file1.createNewFile;
20  file2.createNewFile;
21 File file3 = new File("f:/migu/插件/支付中心");
22 //创建此抽象名表示的目录,以及所有必需但是不存在的父目录
23  file3.mkdirs;
24 File files = file.listFiles;
25 //该方法返回该路径下这一层的所有文件和目录
26 for(File f : files)
27  {
28 System.out.println("migu目录下的文件名:" + f.getName);
29 System.out.println("migu目录文件的绝对路径:" + f.getAbsolutePath);
30  }
31         }
32         else
33         {
34 System.out.println("migu 目录不存在");
35         }
36 
37     }
38 }

执行结果:

migu 目录存在
migu目录下的文件名:CMU.txt
migu目录文件的绝对路径:f:\migu\CMU.txt
migu目录下的文件名:UES.txt
migu目录文件的绝对路径:f:\migu\UES.txt
migu目录下的文件名:插件
migu目录文件的绝对路径:f:\migu\插件

这个DEMO展示的跟File类相关的方法都是简单易懂的,其中有两个地方需要强调下:

1、mkdirs是创建抽象名表示的文件或者目录,并且还会创建该目录或者文件的所有不存在的父目录。

2、在16、17行,我这里用了两种不同的路径分割符来表示抽象路径,从运行结果来看都是可行的。那么两者有什么区别呢?

不同操作系统下文件分隔符:windows中是“\”,linux中是“/”,在用JAVA代码去读取windows系统中磁盘上的文件时候,若要用“\”,必须写成“\\”,因为一个"\"在java中表示是转义符。所以用“\\”代表“\”。在这里我的建议是尽量都写成“/”,因为在所有的操作系统中“/”永远都是没有问题的。

相关文章

Java IO(一): I/O基础概念_java几种io

I/O基础概念1 Java I/O基础概念2 I/O流的概念3 Java I/O类层次结构3.1 字节流类3.2 字符流类3.3 流的使用3.4 示例代码4 总结大家好,我是欧阳方超,公众号同名。1...

Java 输入输出(I/O)详解_java oj输入输出

Java 输入输出(I/O)详解Java 提供了丰富的类库来处理输入输出操作。这些类主要位于 java.io 包中。以下是关于 Java I/O 的详细讲解,分为几个部分:文件 I/O、标准输入输出、...

10分钟看懂 Java IO 底层原理_java底层是用什么语言写的

来源:cnblogs.com/crazymakercircle/p/10225159.html前文我们提到了 Java I/O,顺着这个坡,我们进入 I/O 的世界吧,本来想尝试写点 I/O的底层东西...

Java I/O不迷茫,一文为你导航_java +i+

来源于公众号我没有三颗心脏 ,作者我没有三颗心脏前言在之前的面试中,每每问到关于Java I/O 方面的东西都感觉自己吃了大亏..所以这里抢救一下..来深入的了解一下在Java之中的 I/O 到底是怎...

Java IO 中常用的目录和文件操作,用到的时候从这里拷贝就行了

文件是操作系统对磁盘上数据的组织形式。文件包括文件路径和文件名,比如:/Users/Calvin/Desktop/demo.txt 复制代码文件名的后缀其实是文件名的一部分,文件不一定要有后缀,但是一...