3.21日java学习总结

3.21日java学习总结

文件输入/输出流

1,FileInputStream与FileOutputStream类
这两个类都用来操作磁盘文件。如果用户的文件读取需求比较简单,则可以使用FileInputStream类。
FileInputStream类的常用构造方法
(1)FileInputStream(String name):使用给定的文件名name创建一个FileInputStream对象
(2)FileInputStream(File file):使用File对象创建
2,FileReader和FileWriter类
使用FileOutputStream类向文件中写入数据与FileInputStream类从文件中将内容读出来,都只提供了对字节或字节数组的读取方法,有可能出现乱码,这时候需要Reader和Writer类

带缓存的输入/输出流

缓存是IO的一种性能优化,可以加快速度。Java缓冲流本身并不具有IO流的读取与写入功能,只是在别的流上加上缓冲功能提升效率,就像是把别的流包装起来一样。当对文件或者其它数据源进行频繁的读写操作时,效率比较低,这时候使用缓存流就能加快速度。
1,BufferedInputStream类与BufferedOutputStream类
BufferdeInputStream类的两个构造方法
(1)BufferdeInputStream(InputStream in):创建了一个带有32个字节的缓存流
(2)BufferdeInputStream(InputStream in,int size):按指定大小创建缓存区
在这里插入图片描述
BufferdeOutputStream类的两个构造方法
(1)BufferdeOutputStream(OutputStream in)
(2)BufferdeOutputStream(OutputStream in,int size)
2,flush()方法:用于即使在缓存区没有满的情况下,也将缓存区的内容强制写入到外设,称为刷新,flush方法只对使用缓存区的类有效
3,BufferedReader与BufferedWrite类
在这里插入图片描述
BufferedReader类常用的方法如下:
read():读取单个字符
readLine():读取一个文本行,并将其返回字符串,若无数据,返回null
BufferedWriter类中的方法都返回void,常用方法如下
write(String s,int off,int len):写入字符串的某一部分
flush():刷新该流的缓存
newLine:写入一个行分隔符
在使用BufferedWriter类的Write方法时,数据并没有立刻被写入输出流,而是首先先进入缓存区。

数据输入/输出流

数据输入输出流允许应用程序以与机器无关的方式从底层输入流中读取基本java数据类型。
1,DataInputstream类与DataOutputStream类的构造方法如下
DataInputStream(InputStream in):使用指定的基础InputStream创建一个DataInputStream
DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流
DataOutputStream类的方法:
writeBytes(String s)
writeChars(String s)
writeUTF(String s)
由于java中的字符是Unicode编码,是双字节的,writeBytes只是将字符串中的每一个字符的低字节内容写入目标设备中;而writeChars将字符串中的每一个字符的两个字节的内容都写到目标设备中,writeUTF将字符串按照UTF编码后的字节长度写入目标设备

ZIP压缩输入/输出流

1,如果从ZIP压缩管理文件内读取某个文件,要先找到对应该文件的目录进入点(从他可知该文件内的位置),才能读取这个文件的内容。如果要将文件内容写入ZIP文件内,必须先写入对应于该文件的目录进入点,并且把要写入文件内容的位置移到此进入点所指的位置
2,java实现了IO数据流与网络数据流的单一接口,因此数据的压缩,网络传输和解压缩的实现比较容易。
3,ZipOutputStream类
构造方法
ZipOutputStream(OutputStream out)
常用方法
putNextEntry(ZipEntry e):开始写一个新的ZipEntry,并将流内的位置移至此entry所指数据的开头
write(byte[] b,int off ,int len)“将字节数组写入当前ZIP条目数据
finish():完成写入ZIP输出流的内容,无须关闭它所配合的OutputStream
setComment(String comment):可设置此ZIP文件的注释文字
4,ZipInputStream类
构造方法
ZipInputStream(InputStream in)
常用方法
read(byte[] b,int off ,int len):读取目标b数组内off偏移量的位置长度是len字节
available():判断是否已读完目前entry所指定的数据,已读完返回0,否则返回1
closeEntry():关闭当前ZIP条目并定位流以读取下一个条目
skip(long n):跳过当前ZIP条目中指定的字节数
getNextEntry():读取下一个ZipEntry,并将流内的位置移至该entry所指数据的开头
createZipEntry(String name):以指定的name参数新建一个ZipEntry对象

代码

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileTest {
	public static void main(String[] args) {
		File file=new File("word.txt");
		try {
			FileOutputStream out=new FileOutputStream(file);
			byte buy[]="我有一只小毛驴我从来也不骑".getBytes();
			out.write(buy);
			out.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		try {
			FileInputStream in=new FileInputStream(file);
			byte byt[]=new byte[1024];
			int len=in.read(byt);
			System.out.println(new String(byt,0,len));
			in.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

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("wor.txt");
		try {
			FileWriter fw=new FileWriter(file);
			BufferedWriter bufw=new BufferedWriter(fw);
			for(int k=0;k<content.length;k++) {
				bufw.write(content[k]);
				bufw.newLine();
			}
			bufw.close();
			fw.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
		try {
			FileReader fr=new FileReader(file);
			BufferedReader bufr=new BufferedReader(fr);
			String s=null;
			int i=0;
			while((s=bufr.readLine())!=null) {
				i++;
				System.out.println(s);
			}
			bufr.close();
			fr.close();
		}catch(Exception e){
			e.printStackTrace();
			
		}
	}
}

好久不见
最近好吗
常联系

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Example01 {
	public static void main(String[] args) {
		try {
			FileOutputStream f=new FileOutputStream("word.txt");
			DataOutputStream ds=new DataOutputStream(f);
			ds.writeUTF("adasdsadadasd");
			ds.writeChars("a");
			ds.writeBytes("true");
			ds.writeInt(1);
			ds.close();
			FileInputStream fis=new FileInputStream("word.txt");
			DataInputStream dis=new DataInputStream(fis);
			System.out.println(dis.readUTF());
			System.out.println(dis.readChar());
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

adasdsadadasd
a

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 out=new ZipOutputStream(new FileOutputStream(zipFileName));
		zip(out,inputFile,"");
		System.out.println("压缩中……");
		out.close();
	}
	private void zip(ZipOutputStream out,File f,String base) throws IOException
	{
		if(f.isDirectory()) {
			File[]fl=f.listFiles();
			if(base.length()!=0) {
				out.putNextEntry(new ZipEntry(base+"/"));
			}
			for(int i=0;i<fl.length;i++) {
				zip(out,fl[i],base+fl[i]);
			}
		}else {
			out.putNextEntry(new ZipEntry(base));
			FileInputStream in=new FileInputStream(f);
			int b;
			System.out.println(base);
			while((b=in.read())!=-1) {
				out.write(b);
			}
			in.close();
		}
	}
	public static void main(String[] temp) {
		Myzip book=new Myzip();
		try {
			book.zip("D:/hello.zip", new File("D:/hello"));
			System.out.println("压缩完成");
		}catch(Exception ex) {
			
		}
	}
}

D:\hello\hello1.txt
D:\hello\hello2.txt
压缩中……
压缩完成

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值