IO流四大基类:抽象类
* 字符流--->Reader Writer 如:txt
* 字节流--->InputStream OutputStream 如:声音,图片,电影..
四大基类
输出流 输入流
字符流 Writer Reader
字节流 OutputStream InputStream
节点流,操作文件的流
FileReader FileWriter
FileInputStream FileOutputStream
处理流
缓冲区流,包装流
BufferedReader BufferedWriter
BufferedInputStream BufferedOutputStream
InputStreamReader OutputStreamWriter
其他和二进制相关的流
操作对象的流
ObjectOutputStream ObjectInputStream
操作基本数据类型的流
DataOutputStream DataInputStream
打印流
PrintStream PrintWriter
读取文件步骤:
1. 将指定文件打开
1.1 如果文件为文本文件, 以字符输入流打开(FileReader)
1.2 如果文件为二进制文件, 以字节输入流打开(FileInpuptStream)
2. 读取文件中的数据
3. 关闭输入流对象
写文件步骤:
1. 将指定文件打开
1.1 如果文件为文本文件, 以字符输出流打开(FileWriter)
1.2 如果文件为二进制文件, 以字节输出流打开(FileOutputStream)
2. 将数据写入文件中
3. 关闭输出流对象
读写功能
public class IoDemo {
public static void main(String[] args) {
// read();
write();
}
//写
private static void write() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("C:\\Users\\10151\\Desktop\\1.txt");
fos.write("abc".getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(null!=fos) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//读
private static void read() {
FileInputStream fis = null;
try{
fis = new FileInputStream("C:\\Users\\10151\\Desktop\\导入说明.txt");
byte[] bys = new byte[1024*3];
int len = 0;
while((len=fis.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(fis!=null)
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制文本文件 --------->先读后写
public class IoCopyDemo {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("C:\\Users\\10151\\Desktop\\1.txt");
fw = new FileWriter("C:\\Users\\10151\\Desktop\\2.txt");
char chs[] = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
fw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(null!=fr) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=fw) {
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用缓冲区对象复制文本文件
public class IoCopyDemo {
public static void main(String[] args) {
FileReader fr = null;
BufferedReader br = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
fr = new FileReader("C:\\Users\\10151\\Desktop\\1.txt");
br = new BufferedReader(fr);
fw = new FileWriter("C:\\Users\\10151\\Desktop\\2.txt");
bw = new BufferedWriter(fw);
String line = null;
while((line = br.readLine())!=null) {
bw.write(line);
bw.flush();
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(null!=fr) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=fw) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
复制图片
public class IoCopyDemo {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("C:\\Users\\10151\\Desktop\\1.png");
fos = new FileOutputStream("C:\\Users\\10151\\Desktop\\2.png");
byte bytes[] = new byte[1024*10];
int len = 0;
while((len=fis.read(bytes))!=-1) {
fos.write(bytes, 0, len);
fos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(null!=fis) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=fos) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
long costTime = endTime - startTime;
System.out.println("复制文件完成,耗时:" + costTime + "毫秒");
}
}
}
复制视频
public class IoCopyDemo {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("C:\\Users\\10151\\Desktop\\1.wmv");
fos = new FileOutputStream("C:\\Users\\10151\\Desktop\\2.wmv");
byte bytes[] = new byte[1024*10];
int len = 0;
while((len=fis.read(bytes))!=-1) {
fos.write(bytes, 0, len);
fos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(null!=fis) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=fos) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
long costTime = endTime - startTime;
System.out.println("复制文件完成,耗时:" + costTime + "毫秒");
}
}
}
创建----删除
File f = new File("C:\\Users\\10151\\Desktop\\aa\\bb\\cc");
// boolean flg = f.mkdirs();
boolean flg2 = f.delete();
System.out.println(flg2);
查找文件夹下的所有文件
public class IoCopyDemo {
public static void main(String[] args) {
File dir = new File("C:\\Users\\10151\\Desktop\\aa");
getFilesName(dir);
}
private static void getFilesName(File dir) {
File[] files = dir.listFiles();
for(File file : files) {
if(file.isDirectory())
getFilesName(file);
else
System.out.println(file.getName());
}
}
}
序列化(写)和反序列化(读)
public class IoDemo {
public static void main(String[] args) throws Exception {
read();
write();
}
// 写,序列化
private static void write() throws IOException {
Person person = new Person();
person.setName("张三");
person.setAge(12);
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File("C:\\Users\\10151\\Desktop\\1.txt")));
oo.writeObject(person);
System.out.println("Person对象序列化成功!");
oo.close();
}
// 读,反序列化
private static void read() throws Exception {
FileInputStream fis = new FileInputStream("C:\\Users\\10151\\Desktop\\1.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Person p = (Person) ois.readObject();
System.out.println(p);
}
}