Java學習個人總結


 

聲明:個人原創,轉載請在文章開頭明顯位置注明出處:https://www.cnblogs.com/sunshine5683/p/10063960.html

學習從來都是一個階段的學習,然后進行整理與總結,最后才能形成自己的東西,今天將最近所學習的內容整理總結出來,以便方便大家查閱與借鑒!下面每一個包都有時間說明,每一個包都是獨立的demo,可以直接運行與測試!

=====================================================================
package test.xhq.day19;

import java.io.File;

public class Demo1_File {
    public static void main(String[] args) {
        String parent ="F:\\Mystudy\\java學習總結video\\day19\\video\\001_今日內容.avi";
        String chiled = "001_今日內容.avi";
        File file = new File(parent, chiled);
        System.out.println(file.exists());
    
    }
    
    public static void demo1(){
        File file =new File("F:\\Mystudy\\java學習總結video\\day19\\video\\001_今日內容.avi");
        System.out.println(file.exists());
        
        File file2 = new File("xxx.txt");
        System.out.println(file2.exists());
    }
    
}
========================================================================
package test.xhq.day19;
import java.io.File;
import java.io.IOException;

public class Demo2_FileMethod {

    public static void main(String[] args) throws IOException {
        File file = new File("ccc.txt"); //聲明一個file對象並賦予該對象文件類型及文件名
        System.out.println(file.createNewFile());//創建某類型的文件
        
//        File file2  = new File("yyy1"); //聲明一個file對象並賦予該對象文件夾名字或者路徑
//        System.out.println(file2.mkdir()); //創建文件夾
        
//        File file2  = new File("yyy\\ddd"); //這樣的路徑默認會創建在項目根目錄下,如果想創建在某個盤,則寫上該盤符和絕對路徑即可
//        System.out.println(file2.mkdirs()); //創建多級路徑文件夾
    }
}
=============================================================================
package test.xhq.day19;
import java.io.File;

public class Demo3_FileMethod {
    public static void main(String[] args) {
//        File file = new File("ooo.txt");
//        File file2 = new File("D:\\xxx.txt");
//        System.out.println(file.renameTo(file2));//renameto的功能是如果兩個file路徑相同則改名,路徑不同則改名並剪切
        
//        File file = new File("ooo.txt");
//        System.out.println(file.delete()); //刪除文件, Java中刪除的文件不會保存在回收站
        
//        File file = new File("yyy1");
//        System.out.println(file.delete());//刪除文件夾,注意該文件夾必須是空的或者沒有下級文件夾
        
        File file = new File("yyy\\ddd");
        System.out.println(file.delete());
    }
}
===============================================================================
package test.xhq.day19;
import java.io.File;

public class Demo4_FileMethod {
    public static void main(String[] args) {
//        File dir1 = new File("yyy");
//        System.out.println(dir1.isDirectory());//判斷是否是目錄
//        
//        File dir2 = new File("yyy.xls");//判斷是否是文件 
//        System.out.println(dir2.isFile());
        
        File file = new File("zzz");
        file.setReadable(false);
        System.out.println(file.canRead());//windows中設置不可讀之后還是可讀的,linux系統設置不可讀就真的不可讀了
        file.setWritable(false);
        System.out.println(file.canWrite());//windows系統中設置不可寫。就真的不可寫了
        
    }
}
===============================================================================
package test.xhq.day19;
import java.io.File;
import java.sql.Date;
import java.text.SimpleDateFormat;
import javax.xml.crypto.Data;

public class Demo5_FileMethod {
    public static void main(String[] args) {
//        File file = new File("ccc.txt");
//        File file2 = new File("D:\\user.xml");
//        System.out.println(file.getAbsolutePath());
//        System.out.println(file2.getAbsolutePath());//獲取絕對路徑,即文件實際在哪個目錄下的全路徑
//        
//        System.out.println(file.getPath());//獲取構造方法中傳入的路徑,即與構造方法中傳入的路徑相同
//        System.out.println(file2.getPath());
//        
//        System.out.println(file.getName());
//        System.out.println(file2.getName());//獲取文件夾的名字
//        
//        System.out.println(file.length());
//        System.out.println(file2.length());//獲取文件中字節的個數
//        
//        System.out.println(file.lastModified());//獲取最后修改該文件的毫秒值
//        
//        Date d = new Date(file.lastModified());
//        System.out.println(d);//時間顯示修改
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:MM:SS");
//        System.out.println(sdf.format(d));//時間顯示優化
        
        File dir = new File("F:/Mystudy/Java學習總結video/day19/video");
        String [] arr = dir.list(); //獲取指定路徑下的所有文件或者文件夾(僅僅為了獲取文件名)
        for (String string : arr){
            System.out.println(string);
        }
        File[] subFiles= dir.listFiles();//獲取指定路徑下所有文件或者文件夾的File數組(為了獲取文件對象)
        for ( File file : subFiles){
            System.out.println(file);
        }
    }
}
==========================================================================
package test.xhq.day19;
import java.io.File;

public class Demo6_FileMethod {

    public static void main(String[] args) {
        File dir = new File("E:\\");//
//        String[] arr = dir.list();//獲取e盤下所有文件或文件夾(方式一)
//        for(String string :arr){
//            if (string .endsWith(".jpg")){ // 獲取后綴名為".jpg"的文件
//                System.out.println(string);
//            }
//        }
        File[] subFiles = dir.listFiles();//獲取e盤下所有文件夾或文件(方式二,實際開發中使用此方式)
        for (File subFile:subFiles){
            if (subFile.isFile() && subFile.getName().endsWith(".rpb")){
                System.out.println(subFile);
            }
        }
    }
}
=================================================================
Day22

package test.xhq.day22;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;

public class Demo1_SequenceInputStream {

    /**
     * @param args
     * SequenceInputStream可以將兩個流整合在一起
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        
//        FileInputStream fis = new FileInputStream("ccc.txt");//創建字節輸入流,關聯ccc.txt
//        FileOutputStream fos= new FileOutputStream("c.txt");//創建字節輸出流c.txt
//        int b;
//        while((b=fis.read())!=-1){                            //不斷在ccc.txt上讀字節
//            fos.write(b);                                    //將讀到的字節寫到c.txt上
//        }
//        fis.close();                                        //關閉字節流
//
//        FileInputStream fis2 = new FileInputStream("bbb.txt");
//        int b2;
//        while((b2=fis2.read())!=-1){
//            fos.write(b2);
//        }
//        fis2.close();
//        fos.close();
        
        //整合兩個輸入流
//        FileInputStream fis= new FileInputStream("ccc.txt");
//        FileInputStream fis2 =new FileInputStream("bbb.txt");
//        SequenceInputStream sis= new SequenceInputStream(fis,fis2);
//        //SequenceInputStream sis2= new SequenceInputStream(sis,fis3);//如果有三個流對象時候,可以這樣整合,因為sis也是流對象,單有多個流對象時候,還需要考慮
//        FileOutputStream fos = new FileOutputStream("c.txt");
//        int b;
//        while ((b=sis.read())!=-1){
//            fos.write(b);
//        }
//        sis.close();        //sis在關閉的時候會將構造方法中傳入的流對象也都關閉
//        fos.close();
        
        //整合多個輸入流
        FileInputStream fis = new FileInputStream("bbb.txt");
        FileInputStream fis2= new FileInputStream("ccc.txt");
        FileInputStream fis3= new FileInputStream("c.txt");
        Vector<FileInputStream> v= new Vector<FileInputStream>();//創建集合對象,將流對象存儲進來
        v.add(fis);
        v.add(fis2);
        v.add(fis3);
        
        Enumeration<FileInputStream> en= v.elements();
        SequenceInputStream sis= new SequenceInputStream(en); //將枚舉中的輸入流整合成一個
        FileOutputStream fos=new FileOutputStream("d.txt");
        int b;
        while((b=sis.read())!=-1){
            fos.write(b);
        }
        sis.close();
        fos.close();    
    }

}
======================================================
package test.xhq.day22;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/*
 * 內存輸出流
 * 
 * 解決方案:
 * 字符流讀取
 * ByteArrayOutputStream
 * 
 * */
public class Demo2_ByteArrayOUtputStream {
    public static void main(String[] args) throws IOException {
//        FileInputStream fis= new FileInputStream("c.txt");
//        byte[] arr= new byte[3];
//        int len;
//        while((len=fis.read(arr))!=-1){
//            System.out.println(new String(arr,0,len));
//        }    
        
        FileInputStream fis = new FileInputStream("c.txt");
        ByteArrayOutputStream baos= new ByteArrayOutputStream();//在內存中創建科可以增長的內存數組
        
        int b;
        while((b=fis.read())!=-1){
            baos.write(b);            //將讀取到的數據逐個寫入到內存中
        }
        
        //byte[] arr=baos.toByteArray();        //將緩沖區 的數據全部獲取出來。並賦值給array數組
        //System.out.println(new String(arr));
        
        System.out.println(baos.toString()); //將緩沖區的內容轉換成字符串,在輸出語句中可以省略調用toStreang方法
        
        fis.close();
    }
}

================================================
package test.xhq.day22;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import test.xhq.day22.object.Person;

public class Demo3_ObjectOutputStream {

    /**
     * @param args
     * @throws IOException 
     * 存檔
     */
    public static void main(String[] args) throws IOException {
//        Person pe=new Person("張三", 23);
//        Person pe2=new Person("李四", 24);
//        
//        ObjectOutputStream os= new ObjectOutputStream(new FileOutputStream("e.txt"));
//        os.writeObject(pe2);
//        os.writeObject(pe2);
//        os.close();
        
        Person pe=new Person("張三", 23);
        Person pe2=new Person("李四", 24);
        Person pe3= new Person("王五", 25);
        Person pe4= new Person("趙六", 26);
        
        ArrayList<Person> list=new ArrayList<Person>();
        list.add(pe);
        list.add(pe2);
        list.add(pe3);
        list.add(pe4);    
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("e.txt"));
        oos.writeObject(list);        //把整個集合對象一次寫出
        oos.close();
    }

}
=======================================================================
package test.xhq.day22;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

import test.xhq.day22.object.Person;

public class Demo4_ObjectInputStream {

    /**
     * @param args
     * @throws IOException 
     * @throws FileNotFoundException 
     * @throws ClassNotFoundException 
     * 對象輸入流,反序列化
     */
    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//        ObjectInputStream ois= new ObjectInputStream(new FileInputStream("e.txt"));
//        Person p1= (Person)ois.readObject();
//        Person p2=(Person)ois.readObject();
//        //Person p3=(Person)ois.readObject();//當文件讀取到了末尾時出現EOFException
//        System.out.println(p1);
//        System.out.println(p2);
//        ois.close();
        
        ObjectInputStream ois= new ObjectInputStream(new FileInputStream("e.txt"));
        ArrayList<Person> list=(ArrayList<Person>)ois.readObject();    //將集合對象一次讀取
        for(Person person:list){
            System.out.println(person); 
        }
        ois.close();
    }

}
==========================================================================
package test.xhq.day22;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;

import test.xhq.day22.object.Person;

public class Demo5_PrintStream {

    /**
     * @param args
     * @throws FileNotFoundException 
     * PrintStream和PrintWriter分別是打印的字節流和字符流
     * 且只操作數據目的的
     */
    public static void main(String[] args) throws FileNotFoundException {
        //Demo1();
        //測試
        PrintWriter  pw= new PrintWriter(new FileOutputStream("f.txt"),true);
        pw.println(97);            //自動刷出只針對的是Println()方法
        //pw.write(97);
        pw.close();

    }

    private static void Demo1() {
        System.out.println("aaa");
        PrintStream ps = System.out;
        ps.println(97); // 底層通過ToString()將97轉換成對應的字符串打印出來
        ps.write(97); // 查找碼表找到對應的a打印出來
        
        Person p1= new Person("張三",23);
        ps.println(p1);         //默認調用p1的ToString()方法
        
        Person p2= null;
        ps.println(p2);//打印引用數據類型。如果是null。就打印null,如果不是null,就打印對象的ToString()
        ps.close();
    }

}
============================================================================
package test.xhq.day22;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

public class Demo6_SystemIn {
    public static void main(String[] args) throws IOException {
        //Demo1();
        System.setIn(new FileInputStream("a.txt"));//改變標准輸入流
        System.setOut(new PrintStream("b.txt"));//改變標准輸出流
        
        InputStream is= System.in;//獲取標准鍵盤輸入流,改變后指向文件
        PrintStream ps=System.out;//獲取標准輸出流,默認指向的是控制台,改變后就指向文件
        
        int b;
        while((b=is.read())!=-1){
            ps.write(b);
        }
        System.out.println();//也是一個標准輸出流,不用關閉,因為沒有和硬盤上的文件有關聯的管道
        is.close();
        ps.close();
    }

    private static void Demo1() throws IOException {
        InputStream is= System.in;//一般情況下將systemin封裝到scaner中,效果更好
        int x=is.read();
        System.out.println(x);
        is.close();
        
        InputStream is2=System.in;
        int y=is2.read();
        System.out.println(y);
    }
    
    
}
================================================
package test.xhq.day22;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Test1 {

    /**
     * @param args
     * 定義一個文件輸入流。調用read(byte[]b)方法。將a.txt文件中的內容打印出來
     * 
     * 分析:
     * 1、read(byte[] b)是字節輸入流中的方法,創建FileInputStream。關聯a.txt
     * 2、創建內存輸出流,將讀到的數據寫到內存輸出流中
     * 3、創建字節數組,長度為5(讀取中文肯定會亂碼,所以采取ByteArrayOutputStream 方式)
     * 4、將內存輸出流的數據全部轉換為字符串打印
     * 5、關閉輸入流
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //1、read(byte[] b)是字節輸入流中的方法,創建FileInputStream。關聯a.txt
        FileInputStream fis= new FileInputStream("a.txt");
        //2、創建內存輸出流,將讀到的數據寫到內存輸出流中
        ByteArrayOutputStream baos= new ByteArrayOutputStream();
        //3、創建字節數組,長度為5
        byte[] arr= new byte[5];
        int len ;
        
        while((len=fis.read(arr))!=-1){
            baos.write(arr,0,len);
            System.out.println(new String (arr,0,len));//如果沒有ByteArrayOutputStream,則使用此方式,而此方式肯定會亂碼
        }
        // 4、將內存輸出流的數據全部轉換為字符串打印
        System.out.println(baos);//即使沒有調用,底層也會默認幫我們調用toString()方法
        //5、關閉輸入流
        fis.close();

    }

}
==========================================
package test.xhq.day22;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;


//輸入流也可以拷貝圖片,但是開發中部推薦使用
public class Test2 {
    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("xx.jpg"));//改變標准輸入流
        System.setOut(new PrintStream("copy.jpg"));//改變標准輸出流
        InputStream is=System.in;
        PrintStream ps=System.out;
        
        byte[] arr=new byte[1024];
        int len;
        while((len=is.read(arr))!=-1){
            ps.write(arr,0,len);
        }
        is.close();
        ps.close();
        
    }
}
=====================================================
package test.xhq.day22.object;

import java.io.Serializable;

public class Person implements Serializable{ //序列化
    /**
     * 
     */
    private static final long serialVersionUID = 1L;//可以有可以沒有,如果沒有,則在修改此類后沒
                                                    //有存檔(即沒有執行Demo3_ObjectOutputStream類)
                                                    //直接讀取(即直接執行Demo4_ObjectInputStream類)
                                                    //時,提示序列號錯誤,並且序列號隨機,而加上此行,則沒修
                                                    //改一次手動將該值加1,在沒有存檔直接讀取時就會報出具體的
                                                    //序列號。注意:無論加不加此行,當修改了本類后沒有存檔直接
                                                    //直接讀取都會報錯


    /**
     * @param args
     */
    private String name;
    private int age;
    private String gender;
    
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", getName()="
                + getName() + ", getAge()=" + getAge() + ", getClass()="
                + getClass() + ", hashCode()=" + hashCode() + ", toString()="
                + super.toString() + "]";
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

 

到此最近的內容總結完畢!繼續下一階段的學習。

 

 


免責聲明!

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



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