package com.java.exp14;
/**
* 1、流概述
* 程序从指向源的输入流中读取数据
* 输出流的指向是数据要到达的目的地
* 2、输入、输出流
* 包括字符输入流InputStream和字节输入流Reader
* 字符输出流OutputStream和字节输出流Writer
* 2.1、输入流
* read():从输入流中读取数据的下一个字节
* read(byte[] b):从输入流中读取一定长度的字节,并以整数的形式返回字节数
* mark(int readlimit):在输入流的当前位置做一个标记,参数为标记失效之前允许读取的字节数
* reset():将输入指针返回到当前所做的标记处
* skip(long n):跳过输入流上的n个字节并返回实际跳过的字节数
* markSuppeorted():如果当前流支持mark()/reset()方法就返回true
* close():关闭流并释放所有与该流相关的所有系统数据
* 2.2、输出流
* write(int b):将指定的字节写入次输出流
* write(byte[] b):将b个字节从指定的byte数组写入次输入流
* write(byte[] b,int off,int len):将byte数组中从偏移量off开始的len个字节写入输出流
* flush():彻底完成输出并清空缓存区
* close():关闭输出流
* 3、File类
* 3.1、文件的创建和删除
* File file = new File(String pathname);
* File file = new File(String parent,String child);
* windows平台,如果路径名是据对路径,还可能后跟"\\";
* 3.2、获取文件信息
* getName():获取文件名称
* getParent():获取文件的父路径
* getAbsolutePath():获取文件的绝对路径
* isDirectory():判断文件是否是一个目录
* exits()、isFile():判断文件是否存在
* 4、文件输入/输出流
* 4.1、FileInputStream与FileOutputStream类 字节层面上操作
* 虽然Java在程序结束时自动关闭所有打开的流,但是一个优秀的程序员应该在用完之后及时关闭,
* 否则会造成资源浪费,甚至会造成另一个流得不到需要的资源
* 4.2、FileReader和FileWriter类 字符层面上操作
* 5、带缓存的输入/输出流
* 缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存去
* 5.1、BufferedInputStream和BufferedOutputStream类 字节缓存
* flush()方法就是用于及时在缓存区没有满的情况下,也将缓存区的内容起那孩子写入到外设,习惯上成这个过程为刷新。
* flush()方法值对使用缓存区的OutputStream类的子类有效,当调用close()方法时,系统在关闭流之前,
* 系统也会将缓存区中的信息刷新到磁盘文件中
* 5.2、BufferedReader和BufferedWriter类 以行为为单位进行输入/输出
* read():读取单个字符
* readLine():读取一个文本行,并返回一个字符串;若无数据可读,则返回null
* write(String s,int off,int len):写入字符串的某一部分
* flush():刷新该流的缓存
* newLine():写入一个行分隔符
* 在使用BufferWriter类的write()方法时,数据并没有立刻被写入至输出流,而是首先进入缓存区
* 如果想立刻将缓存区汇总的数据写入输出流,一定要调用flush()方法
* 6、数据输入/输出流 DataOutputStream和DataInputStream
* 7、ZIP压缩输入/输出流
* 7.1、压缩文件
* ZIPOutputStream(OutputStream out);
* 7.2、解压缩ZIP文件
* ZIPInputStream(InputStream in);
* */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
public class Demo {
public static void main(String[] args) {
//创建文件,简单的获取文件信息
/*
File file = new File("word.txt");
if(file.exists()){
String name = file.getName();
long length = file.length(); //获取文件的长度
boolean hidden = file.isHidden(); //判断文件是否隐藏
System.out.println("文件名称:"+name);
System.out.println("文件的长度:"+length);
System.out.println("文件是否隐藏:"+hidden);
file.delete();
System.out.println("File is deleted");
}else{
try {
file.createNewFile();
System.out.println("File is created");
} catch (Exception e) {
e.printStackTrace();
}
}*/
//FileInputStream与FileOutputStream类
/*File file = new File("word.txt");
try {
//创建FileOutputStream对象
FileOutputStream fos = new FileOutputStream(file);
//创建byte数组
byte b[] = "我有一头小毛驴,我从来也不骑。".getBytes();
fos.write(b); //将数组中的信息写入 到文件中
fos.close(); //将流关闭
} catch (Exception e) {
e.printStackTrace();
}
try {
//创建FileInputStream对象
FileInputStream fis = new FileInputStream(file);
byte b2[] = new byte[1024]; //创建byte数组
int len = fis.read(b2); //从文件中读取信息
//将文件中的信息输出
System.out.println("文件中的信息是:"+new String(b2,0,len));
fis.close();
} catch (Exception e) {
e.printStackTrace();
}*/
//FileReader和FileWriter类
File file = new File("word.txt");
try {
//创建Filewriter对象
FileWriter fw = new FileWriter(file);
//获取文本域中的内容
String s = "我有一头小毛驴,我从来也不骑。";
fw.write(s);
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
//创建FileReader对象
FileReader fd = new FileReader(file);
char b3[] = new char[1024];
int len = fd.read(b3);
System.out.println(new String(b3,0,len));
fd.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Example类
package com.java.exp14;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Example {
public static void main(String[] args) {
try {
//创建FileOutputStream对象
FileOutputStream fos = new FileOutputStream("word.txt");
//创建DataOutputStream对象
DataOutputStream dos = new DataOutputStream(fos);
dos.writeUTF("wirteUFT");
dos.writeChars("writeChars");
dos.writeBytes("writeBytes");
dos.close();
//创建FileInputStream对象
FileInputStream fis = new FileInputStream("word.txt");
//创建DataInputStream对象
DataInputStream dis = new DataInputStream(fis);
System.out.println(dis.readUTF());
} catch (Exception e) {
e.printStackTrace();
}
}
}
MyZIP类
package com.java.exp14;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class MyZIP {
private void zip(String zipFileName,File inputFile) throws Exception{
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFileName));
zip(zos, inputFile,"");
System.out.println("压缩中...");
zos.close();
}
private void zip(ZipOutputStream zos, File f, String base) throws IOException {
if(f.isDirectory()){
File[] fl = f.listFiles();
zos.putNextEntry(new ZipEntry(base+"/"));
base = base.length() == 0?"":base+"/";
for(int i = 0; i<fl.length;i++){
zip(zos, fl[i], base+fl[i]);
}
}else{
zos.putNextEntry(new ZipEntry(base));
FileInputStream fis = new FileInputStream(f);
int b;
System.out.println(base);
while((b=fis.read())!=-1){
zos.write(b);
}
fis.close();
}
}
public static void main(String[] args) {
MyZIP book = new MyZIP();
try {
book.zip("D:/hello.zip", new File("D:/hello"));
System.out.println("压缩完成");
} catch (Exception e) {
}
}
}
Student类
package com.java.exp14;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Student {
public static void main(String[] args) {
String content[] = {"好久不见","最近好吗","常联系"};
File file = new File("word.txt");
try {
FileWriter fw= new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
for(int k = 0 ;k<content.length;k++){
bw.write(content[k]);
bw.newLine();
}
bw.close();
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s= null;
int i = 0;
while((s=br.readLine())!=null){
i++;
System.out.println("第"+i+"行:"+s);
}
br.close();
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}