I/O流
IO:JAVA输入输出流,完成java应用程序和数据源(文件,内存,DB)之间进行数据交换
Java的IO流分类:
|—方向:输入和输出(相对于内存来说,往内存放入使用输入流,从内存中取使用输出流)
|—单位:字节流(每次读取一个字节),字符流(每次读取一个字符);如果实现多媒体数据读取使用字节流,读取文本文件使用字符流
|—功能:节点流(将应用程序和数据源连通,进行数据的读写),处理流(必须在节点基础上工作)
作用:完成应用程序和数据源文件,DB数据库之间数据的交换
分类:输入流(Input): 将文件加载到内存中
输出流(Output):将内存数据写入到文件中
继承体系:
FileOutputStream
将内存中的数据写到文件中(磁盘)
//将内存中的数据写到文件中
String content = "Hello World !";
//创建文件对象,指明要写入文件的路径
File file = new File("E:\\file\\a\\b.txt");
//创建文件输出流
/**
* 第一个参数为 需要写入的文件对象
* 第二个参数为 是否追加到写入内容之后
*/
FileOutputStream fileStream = new FileOutputStream(file,true);
//方式1
//获取到内容的字节数组
byte[] bytes = content.getBytes();
//将字节数组一个一个写入文件中
for(byte b : bytes) {
fileStream.write(b);
}
//方式2
//将字节数组一次性写入文件中
fileStream.write(bytes);
fileStream.close();
FileInputStream
将文件中的内容写入到内存中
//指明需要写入内存的文件目录
File file = new File("E:\\file\\a\\a.txt");
//创建输入流
FileInputStream fis = new FileInputStream(file);
//方法一
//将文件中的内容读取到内存中
int read = 0;
//每次读取一个字节大小
while((read = fis.read()) != -1) {
char ch = (char)read;
System.out.print(ch);
}
System.out.println();
//方法二
//指定每次读取9个字节
byte[] b = new byte[9];
int len = 0;
while((len = fis.read(b)) != -1) {
String str = new String(b,0,len);
System.out.println(str);
}
fis.close();
FileWriter
字符输出流,将内存中的内容写到文件中
String str = "你好,百度百科!";
File file = new File("E:\\file\\b\\hello.txt");
//判断文件是否
if(file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file,true);
//方法1:直接写入字符串
fw.write(str);
//方法2 根据字符数组一次性写入
char[] charArray = str.toCharArray();
fw.write(charArray);
//方法3 每次写入一个字符
for(int i = 0 ;i < str.length();i ++) {
char charAt = str.charAt(i);
fw.write(charAt);
}
//释放资源
fw.close();
FileReader
字符输入流,将文件中的内容加载到内存中
//创建文件对象
File file = new File("E:\\file\\b\\hello.txt");
//创建字符文件输入流对象
FileReader fd = new FileReader(file);
//方法1 读出文件内容 每次读取一个字符
int read = 0;
while((read = fd.read()) != -1) {
char ch = (char) read;
System.out.print(ch);
}
//方法2 每次读取9个字符
char[] ch = new char[9];
int len = 0;
while((len = fd.read(ch)) != -1) {
String str = new String(ch,0,len);
System.out.print(str);
}
fd.close();