课中:
理论课:
这周理论课我们学习了JavaI/O系统。
- File类是一个文件类,它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。
- 创建一个·新文件a在D盘:
File file = new File("D:\\a.text");
file.createNewFile();
- 创建一个文件夹可以用mkdir(),创立多级文件夹用mkdirs()。如果创建多级文件用mkdir(),则不会创建文件,结果返回false。
File file1 = new File("D:\\xx\\yy\\zz");
file1.mkdirs();
- 分隔符打印:
System.out.println(File.separator );
或者可以使用/
- 我们学习了下面几种方法:
System.out.println(file.lastModified());//打印文件修改的最后时间
System.out.println(file.isHidden());//查看文件属性是否隐藏
System.out.println(file.canRead());//查看文件是否可读
System.out.println(file.isFile());//判断文件名是否为正常的文件
- 流分为:字节流和字符流
- InputStream的作用是用来表示那些从不同数据源产生输入的类。
- 我们还学了如何去复制一张照片:
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();
//将程序中的文件输出到文件中
}
}
实验课:
实验课老师给我们讲解了第十一次作业,讲的是和我们理论课上对应的,就是输入流输出流。
第一题和第二题和理论课上老师最后讲的那一题是差不多的题型,步骤也是一样的,主要就是要我们熟悉那一个步骤:
- 选择数据源
- 选择数据流
- 读数据或者写数据
- 将文件关闭
第三题中我们学习了一个新知识:缓冲流,我知道了它的作用是:由原来的一个一个字节读取,变成放到缓冲流(可配置字节数)进行批量操作,这样和底层的硬盘操作频率变少,效率提高。从应用的角度,任何减少磁盘活动的策略都有帮助,例如使用带缓存的输入、输出流以减少读、写操作次数用以减少磁盘交互。
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);
}
预习:
- 添加属性和有用的接口:通过FilterInputStream从InputStream读取数据,通过FilterOutPutStream向OutputStream写入。
- Reader和Writer:数据的来源和去处,更改流的行为,未发生变化的类。
- 自我独立的类:RandomAccessFile
- I/O流的典型使用方法
- 文件读取的实用工具
- 标准I/O
- 进程控制
小结:
这一周我们学习了I/O系统,如何用代码去实现复制粘贴这个功能,以及如何加快复制的效率。每次在自己敲代码的时候我都会出现一些很细节的错误,由此我越发的觉得我们需要很耐心呢和细心去对待每一次写代码,以及找到错误时要记住自己的宝贵经验,这样能够快速进步。