学习Java第十四周

课中:

理论课:
这周理论课我们学习了JavaI/O系统。

  1. File类是一个文件类,它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。
  2. 创建一个·新文件a在D盘:
        File file = new File("D:\\a.text");
		file.createNewFile();
  1. 创建一个文件夹可以用mkdir(),创立多级文件夹用mkdirs()。如果创建多级文件用mkdir(),则不会创建文件,结果返回false。
		File file1 = new File("D:\\xx\\yy\\zz");
		file1.mkdirs();
  1. 分隔符打印:
         System.out.println(File.separator );

或者可以使用/

  1. 我们学习了下面几种方法:
		System.out.println(file.lastModified());//打印文件修改的最后时间
		System.out.println(file.isHidden());//查看文件属性是否隐藏
		System.out.println(file.canRead());//查看文件是否可读
		System.out.println(file.isFile());//判断文件名是否为正常的文件
  1. 流分为:字节流和字符流
  2. InputStream的作用是用来表示那些从不同数据源产生输入的类。
  3. 我们还学了如何去复制一张照片:
package IO;

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

public class test1 {

	public static void main(String[] args) throws IOException{
		//1.选择数据源
		
		File fi = new File("D:\\iu.jpg");
		
		File fi1 = new File("D:\\iu2.jpg");
		
		//2.选择数据流
		FileInputStream fis = new FileInputStream(fi);
		
		FileOutputStream fos = new FileOutputStream(fi1);
		
		//3、读数据写数据
		byte[] b = new byte[1024*1024];
		
		while((fis.read(b)) != -1) {//读
			fos.write(b);
		}
		//4.将文件关闭
		
		fos.close();//先打开的后关闭,后打开的先关闭
		fis.close();
		
		//将程序中的文件输出到文件中
	}
}

实验课:
实验课老师给我们讲解了第十一次作业,讲的是和我们理论课上对应的,就是输入流输出流。
第一题和第二题和理论课上老师最后讲的那一题是差不多的题型,步骤也是一样的,主要就是要我们熟悉那一个步骤:

  1. 选择数据源
  2. 选择数据流
  3. 读数据或者写数据
  4. 将文件关闭

第三题中我们学习了一个新知识:缓冲流,我知道了它的作用是:由原来的一个一个字节读取,变成放到缓冲流(可配置字节数)进行批量操作,这样和底层的硬盘操作频率变少,效率提高。从应用的角度,任何减少磁盘活动的策略都有帮助,例如使用带缓存的输入、输出流以减少读、写操作次数用以减少磁盘交互。

	public static void main(String[] args) throws IOException{
		copyFile("D://blu.jpg","D://blu1.jpg");
	}

	private static void copyFile(String str1, String str2) throws IOException {
		// TODO Auto-generated method stub
		File f1 = new File(str1);
		File f2 = new File(str2);
		
		FileInputStream fis = new FileInputStream(f1);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		
		int b;
		while((b = fis.read())!=-1){
			bos.write(b);
		}
		
		byte[] c = bos.toByteArray();
		
		ByteArrayInputStream bis = new ByteArrayInputStream(c);
		FileOutputStream fos = new FileOutputStream(f2);
		
		int d;
		while((d = bis.read())!=-1){//在这里出错,提示d没有初始化,需要加上d=
			fos.write(d);
		}
		fos.close();
		bis.close();
		bos.close();
		fis.close();
	}

第四题就是在第一题上的基础上加上缓冲流:

	FileInputStream fis = new FileInputStream(fi);
	BufferedInputStream fiis = new BufferedInputStream(fis);
	FileOutputStream fos = new FileOutputStream(fo);
	BufferedOutputStream foos = new BufferedOutputStream(fos);
	
	int c;
	while((c=fiis.read())!=-1){
		foos.write(c);
	}

预习:

  1. 添加属性和有用的接口:通过FilterInputStream从InputStream读取数据,通过FilterOutPutStream向OutputStream写入。
  2. Reader和Writer:数据的来源和去处,更改流的行为,未发生变化的类。
  3. 自我独立的类:RandomAccessFile
  4. I/O流的典型使用方法
  5. 文件读取的实用工具
  6. 标准I/O
  7. 进程控制

小结:

这一周我们学习了I/O系统,如何用代码去实现复制粘贴这个功能,以及如何加快复制的效率。每次在自己敲代码的时候我都会出现一些很细节的错误,由此我越发的觉得我们需要很耐心呢和细心去对待每一次写代码,以及找到错误时要记住自己的宝贵经验,这样能够快速进步。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值