IO操作
1、File类
代表操作系统的文件对象;
1.1 构造器
#根据一个路径获得File对象 File (String pathname); #根据一个目录和子文件/目录获得实例 File(String parent,String child ); #根据一个父File实例和子路径获得实例 File(File parent ,String child );
1.2 常用方法
#分隔符属性
static final String separator
#创建功能 Boolean mkdirs( );创建文件夹,如果父文件夹不存在就一起创建 boolean createNewFile( );创建文件 #删除功能 Boolean delete( ) #重命名或剪切 Boolean renameTo(File dest); #判断功能 Boolean isDirectory( ); boolean isFile( ); boolean exists( ); boolean canRead( ); boolean canWrite( ); boolean isHidden( ); #基本获取功能 String getAbsolutePath( ); String getPath( );//获取相对路径 String getName( ); long length( ); long lastModified( ); #高级获取功能 String[ ] list( );//获取指定路径下的名称数组 File[ ] listFiles( );
1.3 注意事项
如果你创建文件或者文件夹忘了写盘符路径,默认是项目根目录;
Java中的删除不走回收站;
删除文件夹,文件夹不能有内容;
2、IO流
输入输出均是相对于内存的操作;
2.1 字节流:万能,不懂就用它
输入流:InputStream;
实现子类:FileInputStream
输出流:OutputStream;
实现子类:FileOutputStream
2.2 字符流:为了方便操作文本内容
输入流:Reader;
实现子类:InputStreamReader( )
输出流:Writer;
实现子类:OuputStreamWriter(OutputStream out )
2.3 序列化流:可以把对象写入文本文件或者在网络中传输
ObjectOutputStream;只有输出流,输入就用字节流或者字符流;
如何实现序列化:
让被序列化的对象所属类实现序列化接口(Serializable);
如何不被序列化:
transient(标记不被序列化);
注意问题:
把数据写到文件后,再去修改类会产生一个问题;
如何解决呢?
在类文件中,给出一个固定的序列化id值;而且,这样也可以解决黄色警告先问题;
2.4 Properties
属性集合类,是一个可以和IO流相结合的类;
可保持再流中或从流中加载。属性列表中每个键及其对应值都是一个字符串;
#把文件中的数据读取到集合中
load();
#把集合中的数据存储到文件中
store();
2.5 其它流
随机访问流:RandomAccessFile类不属于流,是Object的子类。但它融合了InputStream和OutputStream的功能。支持对文件的随机访问读取和写入;
合并流:SequenceInputStream 表示其他输入流的串流;
内存操作流:用于处理临时存储信息的,程序结束,数据就从内存中消失;ByteArrayXXXXX,CharArrayXXXX
3、NIO流
新IO,JDK1.4出现,提高了IO流操作效率。
Interface Path:路径;
Class Paths:静态方法返回一个 Path通过转换路径字符串或 URI;
java.nio.file.Files:提供了静态方法供我们使用
long copy () //返回内容大小
string probeContentType(); //获取文件类型
Path createDirectories(); //创建所有目录
Path createDirectorie() ;//创建一个目录,父目录不存在就报错
boolean deleteIfExists ();
boolean exists ();
Path createFile();