java IO之字節流與字符流
JAVA IO中的所有操作類都放在java .io包中。
主要的類和接口四:File、InputStream、OutputStream、Reader、Writer、Serialzable接口
File類在整個java.io包中是一個獨立的類,此類主要功能是完成與平臺無關文件操作。
創建文件public boolean createNewFile() throws IOException
在D盤根目錄創建singsong.txt文件
- import java.io.File;
- import java.io.IOException;
- public class FileDome {
- public static void main(String[] args) {
- File file = new File("D:\\singsong.txt");// 找到File類的實例
- try {
- file.createNewFile();// 創建文件
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
刪除文件:public boolean delete()
在刪除文件時,要判斷文件是否存在:public boolean exists()
- public class FileDome {
- public static void main(String[] args) {
- File file = new File("D:\\singsong.txt");// 找到File類的實例
- if (file.exists()) {
- file.delete();
- System.out.println("成功刪除文件");
- } else {
- System.out.println("沒有此文件");
- }
- }
- }
在各個操作系統中,文件的分隔符是不一樣的:
Windows:\
Linux:/
Java本身屬於跨平臺的語言,那麼應該可以適應各個不同的平臺要求。那麼爲了解決可以自動適應不同系統的分隔符要求,所以在File類中提供了以下幾個常量:
路徑分隔符:public static final String pathSeparator,“;”
分隔符:public static final String separator,“/”或者“\”
所以,對於實際的開發來說,必須使用這樣的常量進行聲明。
判斷路徑是文件還是文件夾
在程序中可以使用如下的方法進行判斷:
判斷是否文件夾:public boolean isDirectory()
判斷是否文件:public boolean isFile()
- public class IsFileDome {
- public static void main(String[] args) {
- File file1 =new File("D:"+File.separator+"singsong.txt");
- File file2 =new File("D:"+File.separator+"javaWEB");
- System.out.println("singsong.txt = "+file1.isFile());//判斷是否文件
- System.out.println("javaWEB = "+file2.isDirectory());//判斷是否目錄
- }
- }
列出目錄中的內容
File類中提供了以下的兩個方法進行目錄的列表操作:
1、public String[] list() 2、public File[] listFiles()
- 1:
- public class ListFileDome {
- public static void main(String[] args) {
- File file = new File("D:" + File.separator + "javaTest");
- String path[] =file.list();//列出全部的內容,以字符串的形式
- for (int i = 0; i < path.length; i++) {
- System.out.println(path[i]);
- }
- }
- }
運行結果:
- singsong.txt
- WEB
- 2:
- import java.io.File;
- public class ListFileDome {
- public static void main(String[] args) {
- File file = new File("D:" + File.separator + "javaTest");
- File path[] = file.listFiles();// 列出全部的子文件或文件夾
- for (int i = 0; i < path.length; i++) {
- System.out.println(path[i]);
- }
- }
- }
運行結果:
- D:\javaTest\singsong.txt
- D:\javaTest\WEB
從運行結果中可以知道兩個操作同樣屬於列表的操作,但是後者卻可以列出完整的路徑,實際上此時,如果想要操作文件,則肯定使用後者最爲方便,因爲可以找到File類的對象,實際上就找到了完整的路徑。
- import java.io.File;
- public class ListFileDome {
- public static void main(String[] args) {
- File file = new File("D:" + File.separator + "javaTest");
- File path[] = file.listFiles();// 列出全部的子文件或文件夾
- for (int i = 0; i < path.length; i++) {
- System.out.print(path[i].getParent()+"--->");
- System.out.println(path[i]);
- }
- }
- }
運行結果:
- D:\javaTest--->D:\javaTest\singsong.txt
- D:\javaTest--->D:\javaTest\WEB
創建目錄及文件
- import java.io.File;
- import java.io.IOException;
- public class MakeDirDome {
- public static void main(String[] args) {
- File file = new File("D:" + File.separator + "javaTestdir"
- + File.separator + "singsong" + File.separator + "test.txt");
- file.getParentFile().mkdir();// 創建路徑
- try {
- file.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
列出一個目錄下所有文件的路徑,包括個子文件夾中的文件也都要列出
- import java.io.File;
- public class AllListFileDome {
- public static void main(String[] args) {
- File file = new File("D:" + File.separator);
- list(file);
- }
- public static void list(File file) {
- if (file.isDirectory()) {
- File lists[] = file.listFiles();
- if (lists != null) {
- for (int i = 0; i < lists.length; i++) {
- list(lists[i]);
- }
- }
- }
- System.out.println(file);
- }
- }
只能依靠遞歸完成。