File file =new File("路径"); File file =new File("E:/aa.jpg");
File file=new File("父级路径","子级路径") File file =new File("E:/","aa.jpg");
file.getName(); 文件名
file.getPath(); 路径
file.getParent(); 上级路径
file.mkdirs(); 创建路径 (加s可以创建多层路径)
file.createNewFile(); 创建新文件
file.length();文件的长度,字节长度
Sting[] f=file.list();返回一个字符串数组,由路径名组成。
File[] =file.listFile();返回一个File数组,由File实例组成。
递归文件和文件夹。。。
过滤文件。。。。
InputStream,OutputStream(抽象类,不可以实例化)
FileInputStream,FileOutputStream
InputStream in=new FileInputStream("路径");
OutputStream out=new FileOutputStream("路径");
输入流:read 输出流:write
拷贝文件 通过一个byte[]数组
int len=0;
byte[]b=new byte[1024];
while((len=in.read(b))!=-1){
out.wtite(b,0.len);
}
BufferedInputStream和BufferedOutputStream 字节缓冲流 8k
监听键盘输入:InputStream in=Sytem.in;
序列流(合并流)SequenceInputStream
合并流(合并的文件类型要一致)
//合并两个
SequenceInputStream sis=new SequenceInputStream(输入字节流,输入字节流);(歌曲和文本的合并)
合并多个
多个输入字节流被添加到一个 LinkedSet<InputStream> set =new LinkedSet<InputStream>();
set.add(多个输入字节流);
Iterator<InputStream> it=set.iterator();
SequenceInputStream sis=new SequenceInputStream(new Enumeration{//匿名内部类
@Override
public boolean hasMoreElements() {
return iter.hasNext();
}
@Override
public InputStream nextElement() {
return iter.next();
}
})
数据流
DateInputStream; DataOutputStream;
对象序列化:(ObjectInputStream,ObjectOutputStream);
序列化: 将java对象存到磁盘
反序列化:将磁盘的内容转为java对象
想要序列化的类,需要实现Serializable接口
当连续两次序列化同一对象引用时,并不会有两个对象被序列化
即使当第一序列化完成后,修改了对象的值,再次进行序列化,
被序列化对象的值也不会发生变化。
操作字节数组流:ByteArrayInputStream以及ByteArrayOutputStream
随机访问文件:
RandomAccessFile
int skipBytes(int) 向前移动文件指针指定的字节数
void seek(long) 文件指针定位,参数为偏移量
long getFilePointer() 获得指针
以上说的,都是距离文件的首个字符
//解压
ZipIntputStream zis=new ZipIntputStream(输入字节流);
ZipFile zf = new ZipFile("压缩文件的路径"); ZipFile主要是为了获取流
首选需要判断,是否为文件夹。如果是则创建路径,不是文件夹就解压文件,并定义输出文件,
解压文件需要判断是否有上级路径,没有就创建上级路径,判断是否文件存在,没有就创建文件
//压缩单个文件,直接压缩
ZipOutputStream zos=new ZipOutputStream (输出字节流,将文件压缩到什么位置)
zos.putNextEntry(new ZipEntry(文件的名称));
直接将文件拷贝到需要压缩的路径
压缩文件夹
通过递归去判断是单个文件还是文件夹,如果是文件夹需要继续自己调用自己,去遍历,如果是文件则直接压缩