1 转换流
1.1 InputStreamReader
1.1.1 InputStreamReader简介
- InputStreamReader是字节流通向字符流的桥梁。它使用指定的charset读取字节并将其解码为字符,它使用的字符集可以由名称指定或显示给定,或者可以接收平台默认的字符集。
1.1.2 InputStreamReader构造方法
- 创建一个使用默认字符集的InputStreamReader
public InputStreamReader(InputStream in)
- 创建使用给定字符集的InputStreamReader
public InputStreamReader(InputStream in,Charset cs)
- 创建使用给定字符集解码器的InputStreamReader
public InputStreamReader(InputStream in,CharsetDecoder dec)
- 创建使用指定字符集的InputStreamReader
public InputStreamReader(InputStream in,String charsetName) throws UnsupportedEncodingException
1.1.3 方法
public void close() throws IOException
public String getEncoding()
public int read() throws IOException
public int read(char[] cbuf,int offset, int length) throws IOException
public boolean ready() throws IOException
1.3.4 示例
package java20;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 2017/10/14
* 说明:
*/
public class InputStreamReaderDemo {
public static void main(String[] args) {
//标准字节输入流
InputStream is = System.in;
//将标准字节输入流 --> 字符流 解码
InputStreamReader isr = new InputStreamReader(is);
//将转换流 --> 缓冲流
BufferedReader br = new BufferedReader(isr);
}
}
1.2 OutputStreamWriter
1.2.1 OutputStreamWriter简介
- OutputStreamWriter是字符流通向字节流的桥梁。可以使用指定charset将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显示给定,否则将接受平台默认的字符集。
1.2.2 构造方法
- 创建使用默认字符编码的OutputStreamWriter
public OutputStreamWriter(OutputStream out)
- 创建使用给定字符集的OutputStreamWriter
public OutputStreamWriter(OutputStream out,Charset cs)
- 创建使用给定字符集编码器的OutputStreamWirter
public OutputStreamWriter(OutputStream out,CharsetEncoder enc)
- 创建使用指定字符集的OutputStreamWriter
public OutputStreamWriter(OutputStream out,String charsetName) throws UnsupportedEncodingException
1.2.3 方法
public void close() throws IOException
public void flush() throws IOException
public String getEncoding()
public void write(char[] cbuf, int off, int len) throws IOException
public void write(int c) throws IOException
public void write(String str, int off, int len) throws IOException
1.2.4 示例
package java20;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
/**
* 2017/10/14
* 说明:
*/
public class OutputStreamWriterDemo {
public static void main(String[] args) {
//获取字节输出流
OutputStream os = System.out;
//将字符流-->字节流 编码
OutputStreamWriter osw = new OutputStreamWriter(os);
//使用缓冲流进行包装
BufferedWriter bw = new BufferedWriter(osw);
}
}
2 流的操作规律
2.1 为什么要知道流的操作规律
2.2 四个明确
2.2.1 明确源和目的
2.2.2 明确数据是否是纯文本数据
- 源
- 纯文本:Reader
- 不是纯文本:InputStream
- 目的
- 纯文本:Writer
- 不是纯文本:OutputStream
2.2.3 明确具体的设备
- 源设备:
- 硬盘:
- FileInputStream
- FileReader
- 键盘:
- 内存:数组
- 网络:Socket
- 目的设备
- 硬盘:
- FileWriter
- FileOutputStream
- 控制台:System.out
- 内存:数组
- 网络:Socket流
2.2.4 是否需要其他额外功能
3 File
3.1 File类简介
- 用来将文件或者文件夹封装成对象。
- 方便对文件与文件夹的属性信息进行操作。
- File对象可以作为参数传递给流的构造函数。
3.2 File的构造方法及字段
3.2.1 构造方法
- 根据parent抽象路径名和child路径名字符串创建一个新的File实例
public File(File parent,String child)
- 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例
public File(String pathname)
- 根据parent路径名字符串和child路径名字符串创建一个新File实例
public File(String parent, String child)
3.2.2 字段
- 与系统有关的默认名称分隔符,为了表示方便,它被表示为一个字符串
public static final String separator
3.2.3 示例
package java20;
import java.io.File;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File f1 = new File("c:\\demo.txt");
File f2 = new File("c:\\abc","demo.txt");
File f3 = new File(new File("c:\\abc\\abc"),"demo.txt");
}
}
package java20;
import java.io.File;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
System.out.println(File.separator);
}
}
3.3 File常用方法
3.3.1 获取
public String getAbsolutePath()
public long lastModified()
public String getParent()
public File[] listFiles()
package java20;
import java.io.File;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("demo.txt");
String filename = file.getName();
System.out.println("文件名:"+filename);
}
}
package java20;
import java.io.File;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("demo.txt");
String absolutePath = file.getAbsolutePath();
System.out.println("绝对路径:"+absolutePath);
}
}
package java20;
import java.io.File;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\code\\java基础\\demo.txt");
long length = file.length();
System.out.println("文件长度:"+length);
}
}
package java20;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\code\\java基础\\demo.txt");
long time = file.lastModified();
System.out.println("最后修改时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date(time)));
}
}
package java20;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 2017/10/14
* 说明:
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\code\\java基础\\demo.txt");
String parent = file.getParent();
System.out.println("父目录的路径:"+parent);
}
}
3.3.2 创建和删除
public boolean createNewFile() throws IOException
3.3.3 判断
public boolean isDirectory()
public boolean isHidden()
3.3.4 过滤器
public File[] listFiles(FileFilter filter)