ASCLL码表:
继承关系:
file.mkdir() 与 file.mkdirs()
举个栗子,说明:<br /> String src = "C:\\file\\test\\";<br /> //如果src 的父级“C:\\file\\”存在,存在两个方法都不回报错;<br /> 但是如果它的父级不存在,file.mkdir()就会报错"文件建立失败",返回false,而file.mkdirs()就会自动创建,返回true;
字符流与字节流
stream结尾都是字节流,reader和writer结尾都是字符流
两者的区别就是读写的时候一个是按字节读写,一个是按字符。
实际使用通常差不多。
在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
只是读写文件,和文件内容无关的,一般选择字节流
字符流和字节流的转换
InputStreamReader:
两个构造函数:
InputStreamReader(InputStream in);
功能:用默认字符集创建一个InputStreamReader对象;
InputStreamReader(InputStream in,String CharsetName);
功能:接收已指定字符集名的字符串,并用该字符创建对象
OutStreamReader:
两个构造方法:
OutputStreamWriter(OutputStream out);
功能:用默认字符集创建一个OutputStreamWriter对象;
OutputStreamWriter(OutputStream out,String CharSetName);
功能:接收已指定字符集名的字符串,并用该字符集创建OutputStreamWrite对象
对以上两个类进行封装
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in);
flush问题
任何输出流都是有缓冲区的,Bufferedxxx这种输出流提供可配置缓冲区大小,其他输出流都是有默认大小的缓冲区的,FileWriter的flush()方法是从OutputStreamWriter中继承来 的,其作用就是
清空缓冲区并完成文件写入操作的。
举个栗子:
把缓冲区中的东西,转移到应该去的地方,缓冲区清空。比如:你搬东西的时候有A/B/C三区,从A区搬到C区,B区是缓冲区,也就是在搬到C区前,先搬到B区。
flush就是在执行这操作时,将B区中的东西立刻搬到C区。