java -IO流

星點點發表於2020-06-01

 

 

通過流來讀寫檔案

流是指一連串流動的字元,是以先進先出方式傳送資訊的通道

Java流的分類

  按照流向分:   輸入流   VS  輸出流
  按照單位分:   位元組流   VS  字元流
  按照角色分:   緩衝流   VS  處理流

   流的基類                 處理流                          緩衝流 
InputStream        FileInputStream        BufferedInputStream
OutputStream     FileOutputStream     BufferedOutputStream 
Reader                 FileReader                 BufferedReader
Writer                   FileWriter                   BufferedWriter

使用FileInputStream 讀文字檔案

步驟:

1.引入相關的類           import java.io.IOException;

​                       import java.io.FileInputStream;

2.構造檔案輸入流**FileInputStream** 物件    
FileInputStream fis= new FileInputStream(“c:\\test.txt");
3.讀取文字檔案的資料 fis.available(); ​ fis.read(); 4.關閉檔案流物件 fis.close(); @Test public void test01(){ //1.建立File類 File file = new File("HelloWorld.txt"); //2.建立合適的流 FileInputStream fis=null; try { fis = new FileInputStream(file); //3.讀操作 //呼叫FileInputStream 中的read()方法,一個一個位元組的去讀內容 //直到讀取到最後一個內容的時候 返回 -1 int len = fis.read(); while(len!=-1){ //返回值不為-1則迴圈讀取檔案中內容並列印 System.out.print((char)len); len=fis.read(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //4.關閉流 try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

File類常用方法

/**
     *  boolean exists( )              是否存在
     *  boolean delete( )              刪除
     *  boolean createNewFile( )   建立一個新的檔案
     *  boolean isFile( )               是否為檔案
     *  boolean isDirectory( )      是否為資料夾
     *  String getPath( )             獲取路徑
     *  String getAbsolutePath( )  獲取絕對路徑
     *  String getName( )           獲取名字 
     *  long length()                  獲取檔案中內容長度
     */
@Test
    public void test01() {
        // D:\workspace\KH87\workspace\HelloWorld\hello.txt

        // 建立兩個File物件
        File f1 = new File("D:\\workspace\\KH87\\workspace\\HelloWorld\\hello.txt");
        File f2 = new File("HelloWorld.txt");

        System.out.println(f1.isFile());
        System.out.println(f1.isDirectory( ));
        System.out.println(f1.getPath( ));
        System.out.println(f1.getAbsolutePath( ));
        System.out.println(f1.getName( ));
        System.out.println(f1.length());
        
        
        System.out.println("=============");
        System.out.println(f2.isFile());
        System.out.println(f2.isDirectory( ));
        System.out.println(f2.getPath( ));
        System.out.println(f2.getAbsolutePath( ));
        System.out.println(f2.getName( ));
        System.out.println(f2.length());
    
    @Test
    public void test02(){
        File  file = new File("HelloWorld.txt");
        if(file.exists()){
            //如果存在則刪除
            file.delete();
            System.out.println("刪除成功");
            
            
        }else {
            //不存在  建立
            try {
                file.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("檔案建立成功");
            
        }

使用FileOutputStream 寫文字檔案

public class TestOutnput {
    @Test
    public void tset01() {
        File file=new File("word.txt");
        FileOutputStream out=null;
        try {
            out=new FileOutputStream(file);
            out.write("Hello".getBytes());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
@Test
    public void tset02() {
        
        
        File file1=new File("Hello.txt");
        
        File file2=new File("word.txt");
        FileInputStream f1=null;
        FileOutputStream f2=null;
        try {
             f1 =new FileInputStream(file1);
            f2=new FileOutputStream(file2);
            
            byte [] aaa=new byte[30];
             int read;
             while((read=f1.read(aaa))!=-1){
             
            f2.write(aaa, 0, read);
             }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                f1.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                
                try {
                    f2.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }


 

使用FileReader讀取檔案;使用FileWriter寫檔案

public class TestReader {
    @Test
    public void tset01()  {
        File file1=new File("Hello.txt");
        File file2=new File("Hello1.txt");
        FileReader f1=null;
        FileWriter f2=null;
        try {
            f1=new FileReader(file1);
            
             f2=new FileWriter(file2);
            
                char [] abc=new char[30];
                 int len;
                    while((len=f1.read(abc))!=-1){
                        
                        f2.write(abc);
                    }
                 
            
             
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                f1.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    f2.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
    }

 

 

 

相關文章