聲明:個人原創,轉載請在文章開頭明顯位置注明出處: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 } }
到此最近的內容總結完畢!繼續下一階段的學習。