黑马程序员——IO流与File类
来源:互联网 发布:用python直接写utf 编辑:程序博客网 时间:2024/06/05 10:18
一、字符流与字节流
IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。
输入流和输出流相对于内存设备而言。
将外设中的数据读取到内存中:输入。
将内存的数写入到外设中:输出。
流按操作数据分为两种:字节流与字符流。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。再对
这个文字进行操作。简单说:字节流+编码表。
二、字符流
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
PS:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
IO流的异常处理方式:为防止代码异常导致流无法关闭,因此在finally中对流进行关闭。
PS:字符流继承体系图
三、缓冲区
字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。
对应类:
BufferedWriter
BufferedReader
PS:缓冲区要结合流才可以使用。
缓冲区的作用:在流的基础上对流的功能进行了增强。
在字符流的缓冲区中,写入换行使用BufferedWriter类中的newLine()方法。读取一行数据使用BufferedReader类中的readLine()方法。
bufr.read():这个read方法是从缓冲区中读取字符数据,所以覆盖了父类中的read方法。
bufr.readLine():另外开辟了一个缓冲区,存储的是原缓冲区一行的数据,不包含换行符。
原理:使用了读取缓冲区的read方法,将读取到的字符进行缓冲并判断换行标记,将标记前的缓冲数据变成字符串返回。
LineNumberReader
跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号。
四、字节流
基本操作与字符流类相同。但它不仅可以操作字符,还可以操作其他媒体文件。
PS:字节流继承体系图:
五、转换流
由来:
字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
应用:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
InputStreamReader是字节流通向字符流的桥梁。
- import java.io.File;
- import java.text.DateFormat;
- import java.util.Date;
- public class FileMethodDemo{
- public static void main(String[] args){
- getDemo();
- }
- public static void getDemo(){
- File file1 = new File("a.txt" );
- File file2 = new File("d:\\fuck\\a.txt" );
- String name = file2.getName();
- String absPath = file2.getAbsolutePath(); //绝对路径
- String path1 = file1.getPath();
- String path2 = file2.getPath();
- long len = file2.length();
- long time = file2.lastModified();
- //相对路径不同,父目录不同
- //如果此路径名没有指定父目录,则返回 null
- String parent1 = file1.getParent();
- String parent2 = file2.getParent();
- Date date = new Date(time);
- DateFormat df =DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
- String str_time = df.format(date);
- System.out.println( "name:" + name);
- System.out.println( "absPath:" + absPath);
- System.out.println( "path1:" + path1);
- System.out.println( "path2:" + path2);
- System.out.println( "len:" + len);
- System.out.println( "str_time:" + str_time);
- System.out.println( "parent1:" + parent1);
- System.out.println( "parent2:" + parent2);
- }
- }
- import java.io.IOException;
- import java.io.InputStream;
- public class ReadKey{
- public static void main(String[] args) throws IOException {
- readKey();
- }
- public static void readKey() throws IOException {
- InputStream in = System.in;
- int ch = in.read();//阻塞式方法
- System.out.println(ch);
- ch = in.read(); //阻塞式方法
- System.out.println(ch);
- ch = in.read(); //阻塞式方法
- System.out.println(ch);
- in.close();
- }
- }
- 黑马程序员——IO流与File类
- 黑马程序员 — IO(File类)
- 黑马程序员——IO流(四)File类
- 黑马程序员——IO流-File类
- 黑马程序员——IO流5:File类
- 51.黑马程序员-IO流-File类
- 黑马程序员---IO流(File类)
- 黑马程序员--IO流之File类
- 黑马程序员---------IO流File类
- 黑马程序员---IO流-File类,递归
- 黑马程序员---IO流及File类
- 黑马程序员----IO流(File类)
- 黑马程序员--IO流中的File类
- 黑马程序员——Java基础—IO流(File)
- 黑马程序员——IO流(File对象)
- 黑马程序员——Java基础IO流之File
- 黑马程序员—Java IO流(File对象)
- 黑马程序员——java的IO之File类
- MAPGIS 点位置坐标批量导出快速的方法
- Entity Framework相关文章汇总
- win7旗舰版下使用EasyBCD安装Ubuntu
- Improving Multiview Face Detection with Multi-Task Deep Convolutional Neural Networks 基于深度学习的人脸检测算法
- struts.objectFactory和struts.objectFactory.spring.autoWire
- 黑马程序员——IO流与File类
- HDU 5379 Mahjong tree (DFS)
- Scalers:持续行动至少要以年为单位
- 表示数字(整合的别人的)
- Web前端基础(CSS position的正确用法)
- 黑马程序员——网络编程
- 数组与字符串,判断字符串各个字符是否不同
- Android-带缓存的网络图片查看(网络编程)
- Mac 安装 opencv