java.io包:
File
字节流:针对二进制文件
InputStream
--FileInputStream
--BufferedInputStream
--ObjectInputStream
OutputStream
--FileOutputStream
--BufferedOutputStream
--ObjectOutputStream
字符流:针对文本文件。读写容易发生乱码现象,在读写时最好指定编码集为utf-8
Writer
--BufferedWriter
--OutputStreamWriter
Reader
--BufferedReader
--InputStreamReader
--PrintWriter/PrintStream
1、文件流
//测试File工具类
public class Test1_File {
public static void main(String[] args) throws Exception {
//1、创建对象
//参数,可以是文件的路径也可以是文件夹的路径
File f = new File("D:\\teach\\1.txt");
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
2、字节流和字符流
public class Test3_FIS {
public static void main(String[] args) {
method();//字符流读取文件
// method2();//字节流读取文件
}
//字符流读取文件
private static void method() {
Reader in = null;//声明in变量,保证finally里能用
try {
//1、创建字符流对象
//InputStreamReader是转换流,用来把字节流转换成字符流
in = new InputStreamReader(new FileInputStream("D:\\teach\\1.txt"));
Reader in2 = new FileReader("D:\\teach\\1.txt");
//BufferedReader带有缓冲区的字符读取流,把FileReader进行了包装,提供缓冲区,提高效率
Reader in3 = new BufferedReader(new FileReader("D:\\teach\\1.txt"));
//2、开始读取
int b = 0;//定义变量,记录读取到的数据
while( ( b = in.read() ) != -1) {
System.out.println(b);
}
}catch (Exception e) {
e.printStackTrace();
}finally {//保证资源一定会被释放
try {
//3、关闭资源
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//字节流读取文件
private static void method2() {
InputStream in = null;//声明变量,为了finally块中也能用
try {
//1、创建字节流对象
in = new FileInputStream("D:\\teach\\1.txt");
// InputStream in2 = new FileInputStream(new File("D:\\teach\\1.txt"));
//2、开始读取
// System.out.println( in.read() );
// System.out.println( in.read() );
// System.out.println( in.read() );
// System.out.println( in.read() );
// System.out.println( in.read() );
int b = 0;//定义变量,记录每次读到的值
//如果读到了数据的末尾,真没数据了,read()返回-1
while( ( b = in.read() ) != -1) {
System.out.println(b);//打印读到的值
}
}catch (Exception e) {
e.printStackTrace();
}finally {//finally就是为了保证发生了异常也要必须执行的功能
try {
//3、释放资源
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//字符流写出
private static void method3() {
Writer out = null;
try {
//1、创建字符流对象
out = new FileWriter("D:\\teach\\1.txt",true);//追加数据
// Writer out2 = new FileWriter("D:\\teach\\1.txt");//数据发生覆盖
//2、开始写出
out.write(48);
out.write(49);
out.write(50);
out.write(51);
} catch (IOException e) {
e.printStackTrace();
}finally {
//3、关闭资源
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//字节流写出
private static void method4() {
OutputStream out = null;//声明out变量,保证finally能用
try {
//1、创建字节流对象
// out = new FileOutputStream("D:\\teach\\1.txt");//会覆盖以前的数据
out = new FileOutputStream("D:\\teach\\1.txt",true);//保留以前的数据,进行追加
//2、开始写出
out.write(97);
out.write(98);
out.write(99);
} catch (Exception e) {
e.printStackTrace();
}finally {
//3、关闭资源
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}