一、输入和输出的概念
输入输出(
I/O
) 把电脑硬盘上的数据读到程序中,称为输入
,
即
input,
进行数据
的
read
操作从程序往外部设备写数据,称为输出,即
output
,进行数据的
write
操作
![](https://i-blog.csdnimg.cn/blog_migrate/61e5907545a65554082091369280e752.png)
二、File类
1、File
类是
java.io
包中很重要的一个类;
2、File
类的对象可以表示文件,还可以表示目录,在程序中一个
File
类对象可以代
表一个文件或目录;
3、File
对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件
大小等;
4、File
对象无法操作文件的具体数据,即不能直接对文件进行读
/
写操作。
5、File类的常用方法
![](https://i-blog.csdnimg.cn/blog_migrate/ada2303f4cecf1e28e7b5631b7e49545.png)
1、与文件内容有关的内容
import java.io.File;
import java.util.Date;
public class FileDemo1 {
//文件内容
public static void main(String[] args) {
File f1=new File("D:/a.txt");
File f2=new File("D:/a");
File f3=new File("D:/a/b.txt");
System.out.println("文件是否能写入:"+f1.canWrite());
System.out.println("文件/目录是否存在:"+f3.exists());
System.out.println("文件/目录是否是隐藏模式:"+f1.getAbsolutePath());
System.out.println("获取文件绝对地址:"+f1.getAbsolutePath());
System.out.println("最近一次修改文件的时间:"+f1.lastModified());
System.out.println("将long转为时间:"+new Date(f1.lastModified()));
System.out.println("获取文件名:"+f1.getName());
System.out.println("获取文件字节数:"+f1.length());
System.out.println(":");
}
}
2、有关删除的功能
public class FileDemo2 {
//创建文件
public static void main(String[] args) throws IOException {
File f=new File("D:/aa.txt");
System.out.println(f.createNewFile());//创建文件(不能创建文件夹),返回boolean,类型的值
System.out.println(f.delete());//删除文件,返回boolean,类型的值
System.out.println( f.mkdir());//创建文件夹(只能创建一层)
System.out.println(f.mkdirs());//创建文件夹(能创建多层)
System.out.println(f.delete());//删除文件夹,删除时要保证文件夹没有内容
}
}
三、字节流和字符流
(一)、字节流
1、字节:计算机最小的存储单位,电脑上所有文件都是以字节的形式存储到硬盘
2、输入流(InputStream):往程序中读
(1)、文件输入字节流:FileInputStream
(2)、带缓冲区的字节输入流:BufferedInputStream
(3)、数据输入字节流:DataInputStream
(4)、ObjectInputStream
3、输出流(OutputStream):从程序中往外写
(1)、文件输出字节流:FileOutputStream
(2)、带缓冲区的字节输入流:BufferedOutputStream
(3)、数据据输出字节流:DataOutputStream
(4)、ObjectOutputStream
(二)、字符流
1、字符输入流:Reader
转换流(InputStreamReader):可以将底层的字节转化为字符
(1)、文件输入字符流:FileReader
(2)、字符缓冲输入流:BufferedReader
2、字符输出流:Writer
转换流(OutputStreamWriter):可以将底层的字节转化为字符
(1)、文件输出字符流:FileWriter
(2)、字符缓冲输出流:BufferedWriter
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
public class Homework2 {
public static void main(String[] args) throws IOException {
FileInputStream in1=new FileInputStream ("D:/a.png");
FileInputStream in2=new FileInputStream ("D:/a.png");
FileOutputStream out1=new FileOutputStream ("D:/b.png");
FileOutputStream out2=new FileOutputStream ("D:/c.png");
int size=0;
int t=0;
byte [] bytes=new byte[100000000];
Date date1=new Date ();
while ((size= in1.read (bytes))!=-1){
out1.write (bytes,0,size);
}
Date date2=new Date ();
while ((t=in2.read())!=-1){
out2.write(t);
}
Date date3=new Date ();
System.out.println ("read(byte[] b)的读写速度为:"+ (date2.getTime ()-date1.getTime())+"毫秒");
System.out.println ("read()的读写速度为:"+ (date3.getTime ()-date2.getTime())+"毫秒");
in1.close ();
in2.close ();
out1.close ();
out2.close();
}
}