Java I/O

I O 輸出輸入知識點概括.png
字節(jié)流類圖.jpg
字符流類圖.jpg

詳細解說:

package Nio;
//I/O 的特點:File 是文件。midir 創(chuàng)建端目錄,mkdirs 創(chuàng)建長目錄。顯示是否生成目錄。
/**
 * nio是非阻塞的io,
 * 絕對路徑:長,相對,短。
 */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//I/O目標:增刪改
public class Io_test {
    
    
    
    //1.新建文件夾。
    public static void createFile(String filePath){
        File file = new File(filePath);
        file.mkdir();//文件目錄。
        System.out.println("打印目錄:"+file.getAbsolutePath());
    }
    //2.創(chuàng)建文件。
    public static boolean createFileder(String fileName){
        File file = new File(fileName);
        System.out.println("創(chuàng)建文件路徑:"+file.getAbsolutePath());
        boolean isSuccess = false;//??
        try{
            isSuccess = file.createNewFile();
        }catch(IOException e){
            e.printStackTrace(); //打印異常信息。
        }
        return isSuccess;
    }
    
    //3.在文件中書寫內(nèi)容。
    public static void writerFile(String fileName){
        File file = new File(fileName);
        BufferedWriter writer = null;   //創(chuàng)建一個可以寫一行的內(nèi)容的空間。一行是人為回車鍵換的行。
        try{                            //try{ } catch{ } 捕獲異常。try中的內(nèi)容可能出現(xiàn)異常。
            
            FileWriter writer1 = new FileWriter(file);//writer讀取字符,BufferedWriter讀取行,
            writer = new BufferedWriter(writer1);//Decorater裝飾器,BufferedWriter速度比FileWriter快,一批一批的讀寫,F(xiàn)ileWriter逐個字符翻譯。
            
            writer.write("床前明月光,");//也可寫數(shù)組。
            writer.newLine();
            writer.write("疑是地上霜。");
            writer.newLine();
            writer.write("舉頭望明月,");
            writer.newLine();
            writer.write("低頭思故鄉(xiāng)。");//新加的內(nèi)容append().
            writer.newLine();
        }catch(IOException e){          //IOException小異常的父類。
            e.printStackTrace();
        }finally{           //即使異常,不執(zhí)行try中的內(nèi)容,最后也必將執(zhí)行finally的內(nèi)容。
            if(writer !=null){      //如果書寫完畢,關(guān)閉文件。
                try{
                    writer.close();     //文件被打開編寫完應該被關(guān)閉,這樣其他人可以打開再次編寫,close()也可能失敗。所以用try catch、
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
    //4.刪除文件。
    public static void deleteFile(String deletefile1){
        File file = new File(deletefile1);//文件是抽象的,需要實例化才能對文件進行操作。
        file.delete();
    }
    //5.讀取文件。
    public static void readFromFile(String fileName){
        File file = new File(fileName);
        if(!file.exists()){
            System.out.println("文件不存在,讀取失敗");
        }
        else if(file.isFile()){  
            BufferedReader br = null;
            try {
                FileReader writer = new FileReader(file);
                br = new BufferedReader(writer);
                System.out.println("=================");
                String line = br.readLine();
                while(line!=null){
                    System.out.println(line);
                    line=br.readLine();     //打印完當前行,一行一行解釋。
                }
                System.out.println("=================");
                System.out.println("讀取成功");
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                if(br!=null){
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        else{
            System.out.println("這不是一個文件,無法讀??!");
        }
    }

    //6.拷貝文件。
    public static void copy(String fileName,String newFileName){
        if(fileName==newFileName){
            System.out.println("文件名不能重復");
            return ;
        }
        File file = new File(fileName);
        File newFile = new File(newFileName);
        if(!file.exists()){
            System.out.println("文件不存在,拷貝失??!");
        }
        else if(file.isFile()){
            copyFile(fileName,newFileName);
        }
        else if(file.isDirectory()){
            newFile.mkdirs();
            for(String name:file.list()){
                System.out.println(name);
                copy(fileName+"\\"+name,newFileName+"\\"+name);
            }
        }
    }

    public static void copyFile(String fileName,String newName){
        File file = new File(fileName);
        File newFile = new File(newName);
        
        if(!file.exists()){
            System.out.println("文件不存在,拷貝失?。?);
        }
        else if(file.isDirectory()){
            System.out.println("這不是一個文件,拷貝失??!");
        }
        else{
            BufferedReader br=null;
            BufferedWriter bw=null;         
            try {
                if(!newFile.exists()){
                    newFile.createNewFile();
                }
                FileReader reader = new FileReader(file);
                FileWriter writer = new FileWriter(newFile);
                br = new BufferedReader(reader);
                bw = new BufferedWriter(writer);
                String line=br.readLine();
                while(line!=null){
                    bw.write(line);
                    bw.newLine();
                    line=br.readLine();
                }
                bw.flush();
                System.out.println("拷貝成功!");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(br!=null){
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
//              if(bw!=null){
//                  try {
//                      bw.close();
//                  } catch (IOException e) {
//                      e.printStackTrace();
//                  }
//              }
            }
        }
    }

    //7.列出文件下所有目錄。
    public static void listFiles(String filePath){
        
        File file = new File(filePath);
        for(String fileName:file.list()){
            System.out.println("列出目錄下所有文件:"+fileName);
        }
    }
    
    public static void main(String[] args) {
//      File file1 = new File("D:/eclipse/eclipsework/ClassroompPractice/src/Nio/Io.java");//新建文件。
//      System.out.println("判斷文件file1是否存在:"+file1.exists());
//      System.out.println("判斷文件file1是否是目錄:"+file1.isDirectory());
//      System.out.println("判斷文件是否是文件:"+file1.isFile());
//      System.out.println("判斷文件目錄:");
        String filePath = "D:/eclipse/eclipsework/ClassroompPractice/src/LOL/";
        String copyfile = "D:/eclipse/eclipsework/ClassroompPractice/src/LOL/copy.txt";
        String fileName = "D:/eclipse/eclipsework/ClassroompPractice/src/LOL/name.txt";
        String deletefile = "D:/eclipse/eclipsework/ClassroompPractice/src/LOL/ino.txt";//(D:\\eclipse\\)
        createFile(filePath);
        createFileder(copyfile);
        createFileder(fileName);
        writerFile(fileName);
        deleteFile(deletefile);
        listFiles(filePath);
        
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Java.io package 通過數(shù)據(jù)流,序列化和文件系統(tǒng)提供系統(tǒng)輸入和輸出。 File 概述 一種文件或目錄的...
    獅_子歌歌閱讀 1,575評論 1 2
  • 第一章 I / O基礎(chǔ)知識和API 輸入和輸出(I/O)設施是操作系統(tǒng)以及計算機語言及其庫的基礎(chǔ)部分。除了微不足道...
    zhaohelong閱讀 863評論 0 0
  • 摘要 任何一門程序設計語言,要創(chuàng)建一個好的輸入輸出(I/O)系統(tǒng),都是一項艱難的任務。涉及到不同的平臺、不同的編碼...
    TRAMPQ閱讀 267評論 0 0
  • 輸入 從緩存輸入 一般進行文件的輸入輸出時,都會采用緩存的方式,這樣能夠提高應用程序性能。如果想要打開一個文件進行...
    LilacZiyun閱讀 347評論 0 1
  • ~ 鄉(xiāng)村的早晨 早晨,推開窗戶,我聞到了我家后院桂花樹散發(fā)出來的芳香。我聽到了小鳥嘰...
    黃政凱媽媽閱讀 140評論 1 2

友情鏈接更多精彩內(nèi)容