数据输入/输出流
package zhao;
import java.io.*;
public class Demo {
public static void main(String[] args) {
File f = new File("word.txt");
FileOutputStream out = null;
DataOutputStream dos = null;
try {
out = new FileOutputStream(f);
dos = new DataOutputStream(out);// 将文件流包装成数据流
dos.writeUTF("这是写入字符串数据");// 写入字符串数据
dos.writeDouble(3.14);// 写入浮点型数据
dos.writeBoolean(true);// 写入布尔类型数据
dos.writeInt(123);// 写入整形数据
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (dos != null) {
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
DataInputStream di = null;
FileInputStream in = null;
try {
in = new FileInputStream(f);
di = new DataInputStream(in);
System.out.println("readUTF()读取数据:" + di.readUTF());
System.out.println("readDouble()读取数据:" + di.readDouble());
System.out.println("readBoolean()读取数据:" + di.readBoolean());
System.out.println("readINT()读取数据:" + di.readInt());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (di != null) {
try {
di.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果
readUTF()读取数据:这是写入字符串数据
readDouble()读取数据:3.14
readBoolean()读取数据:true
readINT()读取数据:123
ZIP压缩输入/输出流
package zhao;
import java.io.*;
import java.util.zip.*;
public class Demo {
static void compress() {
File source = new File("C:\\Users\\zhao\\Documents\\grass\\");// 源文件
File target = new File("C:\\Users\\zhao\\Documents\\pingan1.wd");// 压缩包
try (FileOutputStream fis = new FileOutputStream(target);
ZipOutputStream zos = new ZipOutputStream(fis)) {
if (source.isDirectory()) {
for (File f : source.listFiles()) {
addEntry(zos, "", f);
}
} else {
addEntry(zos, "", source);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* @param zos - 压缩流
*
* @param base - 文件在压缩包中的位置
*
* @param source - 被压缩的文件
*/
static void addEntry(ZipOutputStream zos, String base, File source) {
if (source.isDirectory()) {
for (File file : source.listFiles()) {
addEntry(zos, base + source.getName() + file.separator, file);
}
} else {
byte buf[] = new byte[1024];
try (FileInputStream fis = new FileInputStream(source)) {
int count = -1;
// 在压缩包中添加新条目
zos.putNextEntry(new ZipEntry(base + source.getName()));
while ((count = fis.read(buf)) != -1) {
zos.write(buf, 0, count);
zos.flush();
}
zos.closeEntry();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
compress();
}
}
package zhao;
import java.io.*;
import java.util.zip.*;
public class Demo {
static void compress() {
File source = new File("C:\\Users\\zhao\\Documents\\grass\\");// 源文件
File target = new File("C:\\Users\\zhao\\Documents\\java.zip");// 压缩包
try (FileOutputStream fis = new FileOutputStream(target);
ZipOutputStream zos = new ZipOutputStream(fis)) {
if (source.isDirectory()) {
for (File f : source.listFiles()) {
addEntry(zos, "", f);
}
} else {
addEntry(zos, "", source);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* @param zos - 压缩流
*
* @param base - 文件在压缩包中的位置
*
* @param source - 被压缩的文件
*/
static void addEntry(ZipOutputStream zos, String base, File source) {
if (source.isDirectory()) {
for (File file : source.listFiles()) {
addEntry(zos, base + source.getName() + file.separator, file);
}
} else {
byte buf[] = new byte[1024];
try (FileInputStream fis = new FileInputStream(source)) {
int count = -1;
// 在压缩包中添加新条目
zos.putNextEntry(new ZipEntry(base + source.getName()));
while ((count = fis.read(buf)) != -1) {
zos.write(buf, 0, count);
zos.flush();
}
zos.closeEntry();
} catch (Exception e) {
e.printStackTrace();
}
}
}
static void decompression() {
File dir = new File("zip\\");
File source = new File("src\\java.zip");
byte buf[] = new byte[1024];
ZipEntry entry = null;
try (FileInputStream fis = new FileInputStream(source);
ZipInputStream zis = new ZipInputStream(fis)) {
while (true) {
entry = zis.getNextEntry();// 获取一个条目
if (entry == null) {
break;
}
if (entry.isDirectory()) {
continue;
}
File f = new File(dir, entry.getName());
if (!f.getParentFile().exists()) {// 如果解压的文件夹不存在
f.getParentFile().mkdir();// 创建
}
int count = -1;
FileOutputStream fos = new FileOutputStream(f);
while ((count = zis.read(buf)) != -1) {
fos.write(buf, 0, count);
fos.close();
zis.closeEntry();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// compress();
decompression();
}
}