java中IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:
字节流(抽象基类为InPutStream和OutPutStream)列如:jpg,MP3,MP4等等文件
字符流(抽象基类为Reader和Writer)列如:word文档,excal文档等等。
根据流向不同,可以分为:输入流和输出流。
通过file关键字对文件,文件夹操作,file类可以跨平台进行操作,因为java是跨平台的开发环境。
主要的方法如下图:
java.io包下常用的16个流
文件流:
- java.io.FileInputStream
- java.io.FileOutputStream
- java.io.FileReader
- java.io.FileWriter
转换流:(将字节流转换成字符流) - java.io.InputStreamReader
- java.io.OuputStreamWriter
缓冲流:(减少磁盘操作,增加磁盘寿命) - java.io.BufferedReader
- java.io.BufferedWriter
- java.io.BufferedInputStream
- java.io.BufferedOnputStream
数据流: - java.io.DataInputStream
- java.io.DataOnputStream
对象流: - java.io.ObjectInputStream
- java.io.ObjectOnputStream
标准输出流: - java.io.PrintWriter
- java.io.PrintStream
实战
废话不多说代码上
创建一个类,运行后在控制台输入y可以创建一个A.txt文档到D盘 (输入其他字符无效,并重新输入),然后当你每次在控制台输入的字符串按下回车键后都会输出到A.txt文档中并且换行(如果输入end则结束输出否则继续执行输出)
import java.io.*;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
Scanner input = new Scanner(System.in);
//创一个无限循环,用于循环输入直到输入为y,break跳出终止循环
for (; ; ) {
System.out.println("请输入y创建txt文档");
String yy = input.next();
//做判断,当输入y时进入if,否则继续循环
if (yy.equals("y")) {
//在指定位置创一个A.txt
File f1 = new File("d:\\A.txt");
break;
} else {
System.out.println("创建失败");
continue;
}
}
System.out.println("请输入要录入的内容");
br = new BufferedReader(new InputStreamReader(System.in));
try {
bw = new BufferedWriter(new FileWriter(new File("d:\\A.txt")));
String show="";
while ((show = br.readLine()) != null) {
//写入一行内容
if (show.equals("end")) {
System.out.println("结束输入");
break;
}
bw.write(show);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}