實驗05部落格園總結
阿新 • • 發佈:2018-11-20
什麼是流:
一連串有順序的資料系列可以看成是一個流,java將檔案看成流
Java通過流物件存取檔案
流的分類:
1.輸入流和輸出流:資料“流入”程式的稱為“輸入”。
2.位元組流和字元流:指存取資料的最小單位。
3.節點流(Node Stream)和處理流(Processing Stream):節點流直接連線到資料來源,處理流是對一個已存在的流的連線和封裝,通過所封裝的流的功能呼叫實現增強的資料讀寫功能,它並不直接連到資料來源。
流的基類:
1.位元組流的兩個基類InputStream和OutputStream:以位元組為單位,是所有位元組輸入與輸出流的父類;
2.字元流的兩個基類Reader和Writer:以字元(2個位元組)為單位。
1、編寫一個程式,指定一個資料夾,能自動計算出其總容量
package 課堂實驗05; import java.io.File; import java.util.ArrayList; import java.util.Scanner; public class filecount { static long size=0; private static ArrayList<String> filelist=new ArrayList<String>(); private static filecount s; private staticScanner scan; public static void main(String[] args) { s = new filecount(); System.out.println("請輸入一個資料夾\n"); scan = new Scanner(System.in); String filePath = scan.nextLine(); filecount.getFiles(filePath); System.out.println("資料夾總容量為:"+size); }static void getFiles(String filePath) { int i = 0; int sum = 0; File f=new File(filePath); File[] fs=f.listFiles(); for(File file:fs) { if(file.isDirectory()) { getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath()); } else { System.out.println(fs[i].getAbsolutePath()); sum = file.getAbsolutePath().length(); size += file.getAbsolutePath().length(); System.out.println("本檔案大小為"+sum); i++; } } } }
結果截圖如圖:
2、編寫一個檔案加解密程式,通過命令列完成加解密工作
package 課堂實驗05; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class eencryption { public static void encryption() throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D://TTT1.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D://TTT2.txt")); int b; while((b = bis.read()) != -1) { bos.write(b ^ 123); } bis.close(); bos.close(); } public static void main(String[] args) throws IOException { encryption(); } }
3、編寫一個檔案分割工具,能把一個大檔案分割成多個小的檔案。並且能再次把他們合併起來得到完整的檔案。