什么是流:
一连串有顺序的数据系列可以看成是一个流,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 ArrayListfilelist=new ArrayList (); private static filecount s; private static Scanner 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、编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把他们合并起来得到完整的文件。