IO
1IO
1.1什么是IO
IO:对应着Input(输入)和Output(输出)
输入指的是从磁盘输入到内存中,输出指的是从内存写到磁盘中
1.2IO类型分类
根据数据处理的不同类型分为:字节流和字符流
字节流:一个字节一个字节的输入和输出 8bit----1byte
字符流:一个字符地输入和输出
这里两个的不同比如“我爱Java”一个中文字符占两个byte,而一个英文字符占一个byte,如果用字节流输入输出,那么就可能出现乱码,而如果我们使用字符流,那么就可以解决这种现象。
但是字节流也有他的优势,可以处理图片视频等数据。
字符流的引用类型一般是以Read或者Write结尾例如:
InputStreamReader/OutputStreamWriter
字节流一般以Stream结尾例如:
FileInputStream/FileOutputStream
BufferedInputStream/BufferedOutputStream
根据数据流向不同分为:输入流和输出流
这两者从物理上来讲是方向不同。
1.3操作步骤
- 确定源
- 打开流
- 操作文件
- 关闭流
确定输入源
InputStream in = new FileInputStream(String类型对象,或者File类型对象);
String类型的对象需要使用文件的绝对路径或者相对路径
2实例
InputStream inputStream = null;
OutputStream outputStream = null;
File file = new File("C:\\Users\\小艺\\IdeaProjects\\Test310\\src\\com\\fq\\Main\\Animal.java);
//这里确定一个输入的文件
if(!file.exists())file.createNewFile();
File file1 = new File("C:\\Users\\小艺\\IdeaProjects\\Test310\\src\\com\\fq\\text\\readme.txt");//输出的文件,写入的文件
package com.fq.text;
import java.io.*;
public class IOMain {
public static void main(String[] args) throws IOException {
InputStream inputStream = null;
OutputStream outputStream = null;
File file1 = new File("C:\\Users\\小艺\\IdeaProjects\\Test310\\src\\com\\fq\\text\\readme.txt");
System.out.println("确定输入文件"+file1);
try {
inputStream = new FileInputStream("C:\\Users\\小艺\\IdeaProjects\\Test310\\src\\com\\fq\\Main\\Animal.java");
System.out.println("---------------打开输入流---------");
outputStream = new FileOutputStream(file1);
System.out.println("-----------打开输出流--------------");
byte[] flush = new byte[4];
while (inputStream.read(flush) != -1) {
outputStream.write(flush);
outputStream.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
try{
outputStream.close();
System.out.println("-----------关闭输出流---------");
inputStream.close();
System.out.println("-------------关闭输入流-------------");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/*
确定输入文件C:\Users\小艺\IdeaProjects\Test310\src\com\fq\text\readme.txt
---------------打开输入流---------
-----------打开输出流--------------
-----------关闭输出流---------
-------------关闭输入流-------------
*/
Animal类
package com.fq.Main;
public class Animal implements Cloneable{
String name;
public Animal() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Animal(String name) {
this.name = name;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
readme.txt
package com.fq.Main;
public class Animal implements Cloneable{
String name;
public Animal() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Animal(String name) {
this.name = name;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}