深入理解JAVA I/O系列一:File


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中表示是轉義符。所以用“\\”代表“\”。在這里我的建議是盡量都寫成“/”,因為在所有的操作系統中“/”永遠都是沒有問題的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM