Java第二十二天学习笔记~IO流(转换流、流的操作规律、File类)

转换流

InputStreamReader

public class InputStreamReaderDemo {
	public static void main(String[] args) throws IOException {
		//演示字节转字符流的转换流
		readCN();
	}
	public static void readCN() throws IOException{
		//创建读取文件的字节流对象
		InputStream in = new FileInputStream("c:\\cn8.txt");
		//创建转换流对象 
                InputStreamReader isr = new InputStreamReader(in,"utf-8");
		//使用转换流去读字节流中的字节
		int ch = 0;
		while((ch = isr.read())!=-1){
			System.out.println((char)ch);
		}
		//关闭流
		isr.close();
	}
}

是字节流通向字符流的桥梁,它使用指定的charset读取字节将其解码成为字符

OutputStreamWriter

public static void writeCN() throws Exception {
		//创建与文件关联的字节输出流对象
		FileOutputStream fos = new FileOutputStream("c:\\cn8.txt");
		//创建可以把字符转成字节的转换流对象,并指定编码
		OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
		//调用转换流,把文字写出去,其实是写到转换流的缓冲区中
		osw.write("你好");//写入缓冲区。
		osw.close();
	}

是字符流通向字节流的桥梁,它使用指定的charset将要写入流中的字符编写成字节

键盘录入

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in);

BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out);

流的操作规律

之所以要弄清楚这个规律是因为流对象太多,开发时不知道哪个对象合适

想要知道开发时用哪些对象,只要知道4个明确即可

1.明确源和目的

扫描二维码关注公众号,回复: 4665075 查看本文章

源:InputStream Reader

目的:OutputStream Writer

2.明确数据是否是存文本数据

源:是存文本:Reader

否:InputStream

目的:是存文本Writer

否:OutputWriter

到这里就可以明确需求中具体要使用哪个体系

3.明确具体设备

源设备:

    硬盘:File

    键盘:System.in

    内存:数组

    网络:Socket流

目的设备:

     硬盘:File

    键盘:System.out

    内存:数组

    网络:Socket流

4.是否需要其他额外功能

是否需要高效(缓冲区)。是就加上Buffer

什么时候使用转换流呢?

1.源或者目的对应的设备是字节流,但是操作的却是文本流,可以使用转换流作为桥梁

2.一旦操作文本涉及到具体的指定编码时,必须使用转换流

File类

1、将文件或者文件夹封装成对象

2、方便对文件与文件夹的属性信息进行操作

3、File对象可以作为参数传递给流的构造函数

File对象的常见方法

1、获取

  1.     获取文件名称
  2. 获取文件路径
  3. 获取文件大小
  4. 获取文件修改路径

2、创建与删除

3、判断

4、重命名

renameTo

5、file.list

获取当前目录下的文件以及文件夹的名称,包含隐藏文件,调用list方法的File对象中封装的必须是目录,否则会发生NullpointerException

如果访问的系统级目录也会发生指针异常

如果目录存在但是没有内容,会返回一个数组,但是长度为0

过滤器 dir.list(new SuffixFilter(".txt"));

  

猜你喜欢

转载自blog.csdn.net/crazyhulu/article/details/85271816