黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
来源:互联网 发布:桃子圈微博全数据图 编辑:程序博客网 时间:2024/06/06 09:05
一、File对象
流对象只能操作数据,而文件等信息必须通过File类操作。
File常见方法
1、创建。 boolean createNewFile(); //f.createNewFile();//如果此文件已经存在,则返回false2、删除。 boolean delete(); void deleteOnExit(); //在程序退出时删除指定文件,一般临时文件较长使用3、判断。 切记:在判断文件是否是文件或者目录时,必须先判断该文件是否存在boolean exists();//文件是否存在isFile()isDirectory()isHidden()boolean canExecute(); //。。 canRead()canWrite().....4、获取。getName()getPath()getAbsolutePath().....5、创建目录(创建文件夹)File f= new File("test");f.mkdir();//只能创建文件夹,即一级目录f.mkdirs();//创建多级目录
二、Properties对象
1、是hashtable的子类,具备map集合的特点,存储的键值对都是字符串。
2、是集合和IO技术相结合的集合容器。
3、特点:可用于键值对形式的配置文件。
属性操作文件的键值对实例:
import java.io.*;import java.util.*;class Test{public static void main(String[] args) throws IOException{Properties prop = new Properties();File file = new File("count.ini");if(!file.exists()){file.createNewFile();}FileInputStream fis = new FileInputStream(file);prop.load(fis);int count = 0;String value = prop.getProperty("time");if(value != null){count = Integer.parseInt(value);if(count >= 5){System.out.println("使用次数已经到!!!");return;}}prop.setProperty("time",++count+"");FileOutputStream fos = new FileOutputStream(file);prop.store(fos,"注释");fis.close();fos.close();}}
三、其他流对象
打印流:
PrintStream 字节打印流
构造函数可以接受的参数:1、file对象File 2、字符串路径String 3、字节输出流OutputStream
PrintWriter 字符打印流
构造函数接受的参数:1、file对象File 2、字符串路径String 3、字节输出流OutputStream4、字符输出流 Writer
序列流
SequenceInputStream 对多个流合并 (分割流练习)
可序列化实现接口Serializable,序列化堆中的对象,静态数据不能被序列化,关键字transient修饰的数据也不能被序列化
管道流(涉及到多线程)
PipedInputStream PipedOutputStream
四、读取流的一个特殊有趣现象
即常见的“联通”现象。
现象:1、在电脑任何位置,右键新建文本文档;2、用微软自带的文本文档打开该文档,并输入“联通”两个字,不要有标点空格等其他字符,保存,并关闭;3、再次用微软自带的文本文档打开该文档,看看什么效果?(没有“联通”字样,而是一个无法识别的黑块)
原因分析:
1、微软文本文档默认新建使用GBK字符集;
2、UTF-8编码按1 2 3 字节不等存储数据,解码时需要一一对应去解码,因此UTF-8的每一个字符都会带一个头标示,来标示应该读取几个字节查表。查表为:
一字节:0.。。。 二字节: 字节1:110 。。。 字节2: 10 。。。三字节:字节1:1110 。。。字节2: 10 。。。。字节3:10 。。。。因此,文本文档在读取数据时,如果发现数据存储的格式正好符合以上存储方式,则会以UTF-8的编码打开。
3、中文“联通”两个字的二进制存储正好符合utf-8的规则,因此文本文档就误以utf8编码打开,去查u8编码表,自然没有,故显示一个不识别的黑块。
解决办法也简单,只要在“联通”前边写个汉字即可。
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- 黑马程序员--IO(二)--File类、Properties类、打印流、序列流等
- 黑马程序员--------java IO流 File类、Properties、打印流、合并流、对象序列化、随机读写、字符编码
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流) (黑马程序员)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO、File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础----IO(File类、Properties类、打印流、序列流、合并流)(3)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流、其他类
- 黑马程序员——Java基础:IO(二):File类、Properties类、打印流、序列流......
- 黑马程序员 Java基础<十>---> IO流<2>(File类,Properties,打印流,合并流)
- 黑马程序员--Java基础学习(IO流--File对象和Properties)第二十天
- 黑马程序员--java基础--File类、Properties类、打印流、序列流
- 黑马程序员——Java基础——File、Properties类、 打印流、序列流
- 黑马程序员——IO(二)——File类、Properties类、打印流、序列流等 .
- 黑马程序员 Java基础IO流之File类
- 同域名下的JSESSIONID冲突
- Decode Ways
- 裸设备上的oracle文件备份-----HP-UX下oracle的裸设备大小
- Ubuntu 12.04中文输入法的安装
- P2P - Network Address and Port Translation Behavior
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- OpenGL Shader基本概念
- hdu 4528 捉迷藏
- 华为机考回忆版二
- 安卓开发41:状态保存 Bundle savedInstanceState
- 用 Quartz 进行作业调度
- MySQL创建Function时报的1418错误代号解决办法
- 开发常识性堆和栈的一些东西
- mysql 中取得汉字字段的各汉字首字母