没有合适的资源?快使用搜索试试~ 我知道了~
JavaSE基础知识笔记
资源推荐
资源详情
资源评论
一.java.io.File——该类的每一个实例用于表示一个文件或目录。实际表示的是一个抽象路径.
1.构造方法
public File(string pathname) 根据文件路径创建文件对象
public File(string parent,string child) 根据父路径名字符串和子路径名字符串创建文件对象
public File(File parent,string child) 根据父路径对应文件对象和子路径名字符串创建文件对象
2.常用方法
public boolean isDirectory() 判断此路径名表示的File是否为文件夹
public boolean isFile() 判断此路径名表示的File是否为文件
public boolean exists() 判断此路径名表示的File是否存在
public long length() 返回文件的大小(字节数量) 细节:这个方法只能获取文件的大小,单位是字节
public String getName() 返回文件的名称,带后缀
public boolean createNewFile() 创建一个新的空的文件 细节:如果要创建的文件所在的目录不存
在,该方法会抛出异常。
public boolean mkdir()/mkdirs() 创建单/多级文件夹
public boolean delete() 删除文件、空文件夹 细节:只有File表示的是一个空目录时才可以被删
除!!
public boolean isHidden() 是否为隐藏的
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示
的目录中满足指定过滤器的文件和目录。
当调用者File表示的路径不存在时,返回null,当调用者File表示的路径是文件时,返回null,当调用者
File表示的路径是一个空文件夹时,返回一个长度为0的数组,当调用者File表示的路径是一个有内容的
文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,当调用者File表示的路径是一个有隐
藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回包含隐藏文件,当调用者File
表示的路径是需要权限才能访问的文件夹时,返回null
public static File[] listRoots() 列出可用的文件系统根
public String[] list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
二.io:input和output 输入(读,获取信息,是对于计算机的)与输出(写,发送信息)
java将输入和输出用"流strean"表达,分为输入流与输出流,我们可以将它们想象为连接我们的程序与一
个设备之间的"管道",通过它们可以读写设备
JAVA IO将流按照读写单位划分为字节流与字符流
字节流的超类:java.io.InputStream和java.io.OutputStream 字节流是以字节为单位读写数据的流
字符流的超类:java.io.Reader和java.io.Writer 字符流是以字符为单位读写数据的流
注:这两组超类是平级关系,互相不存在继承
1.字节流——文件流(低级流)
java.io.FileInputStream和FileOutputStream,文件流继承自Inputstream和0utputstream.
功能:是用于连接文件的"管道",可以对文件进行读写的流。
①文件输出流四个构造器 close();//流用完了要关闭
FileOutputStream(String filename)
FileOutputStream(File file)
文件流创建时如果指定的文件不存在会自动创建出来,前提是该文件所在的目录必须存在,否会会抛出异
常地出的异常与FiLe创建文件时相同情况抛出的异常一致,以上两种构造器创建文件流时,如果指定
的文件已经存在了,会先将该文件内容 清除。之后通过当前流写出的所有内容会被重写写入到文件
中。小知识:File与FileOutputstream都一样,在指定相对路径时,如果"./"不写,默认就表示当前目录
即:"./fos.dat"等价于"fos.dat"
FileOutputStream(String filename,boolean append)
FileOutputStream(File file,boolean append)
如果创建文件流时append的值为true,则当前文件流为追加模式:
如果指定的文件已经存在,原数据全保留,新写入的内容都会陆续追加到文件末尾
②相关方法
void write(int d) 一次写一个字节数据,通过该输出流向目标位置写出1个字节,写出的是给定的int值
对应的2进制的"低八位"
当我们利用文件输出流写操作时: fos.write(1), 向文件fos.dat中写入1个字节. int值1的2进制样
子:00000000 00000000 00000000 00000001 写后面这些
void write(byte[] data) 一次性将给定的字节数组中所有字节写出
void write(byte[] data,int offset,int len) 一次性将给定的字节数组data从下标offset处开始的连续
Len个字节写出
③书写时换行
windows: \r\n linux:\n Mac:\r
细节:在windows操作系统当中,java对回车换行进行了优化虽然完整的是\r\n,但是我们写其中一个\r或
者\n,java也可以实现换行,因为java在底层会补全。
建议:不要省略,还是写全了。
④文件输入流两个构造方法
FileInputStream(String filename)
FileInputStream(File file)
上述两种构造器创建文件输入流时,如果参数表达的是一个文件则可以正常实例化若表达的文件不存
在,则会直接抛出异常:FileNotFoundException
例如: FileInputStream fis = new FileInputStream("./fos.123");//当fos.123不存在时
java.io.FileNotFoundException: .\fos.123 (系统找不到指定的文件。)
FileInputStream fis = new FileInputStream(".");//当表达的是一个目录时
java.io.FileNotFoundException: . (拒绝访问。)
⑤相关方法
int read() 读取1个字节,并以int形式返回。返回的int值对应的2进制中只有"低八位"是有效的(读取到
的字节) ,高24为全部补0。如果该方法返回的int值为整数-1(32位2进制都是1)时,则表达流读取到了
末尾。写不了-1(因为写入的是后八位11111111 然后读的时候补0,读出就是255)
int read(byte[] data):一次性读取给定的字节数组data总长度的字节量,并存入到该数组中。返回值
表达实际读取到了多少个字节。如果返回值为-1则表达流读取到了末尾。
⑥编码和解码
String类中的方法
public byte[] getBytes() 使用默认方式进行编码
public bytel] getBytes(string charsetName) 使用指定方式进行编码
string(byte[] bytes) 使用默认方式进行解码
String(bytel] bytes, string charsetName) 使用指定方式进行解码
JAVA.IO将流分为节点流与处理流
节点流:也称为低级流,是实际连接程序与另一端的"管道”,负责实际读写数据的流
处理流:也称为高级流,不能独立存在,必须连接在其他流上,目的是当数据经过它时对数据进行某种
加工,简化我们的同等操作
实际开发中,我们总是串联一组高级流到某个低级流上完成流水线式的读写操作,这个过程被称为"流
的连接"
注意:读写一定是建立在节点流上进行的,读写不一定需要处理流,使用处理流是为了简化我们操作。
2.字节流——缓冲流(高级流):java.io.BufferedInputStream和BufferedOutputStream它们也继承自
InputStream和OutputStream
功能:缓冲流可以保证读写效率
① void write(int i)和int read()
缓冲的read方法虽然也是读取一个字节。但是本质上当第一次调用时他会向其连接的流一次性块读一
组字节回来并存入到内部维护的字节数组中(buf上,默认8kb)然后将数组第一个字节返回。如果再次
调用read方法则直接将字节数组中第二个字节返回,依次类推。再次过程中并不会再次读取硬盘,直
到所有字节全部返回后,才会再次真实读取
②flush方法
注意:缓冲的wirte方法会将数据攒到充满之后,才会传递下去,所以要写一个flush()方法,缓冲输出
流的flush方法会强制将缓冲流中已经缓冲的数据一次性写出,close()中默认有一个flush方法
flush方法是在接口:FLushable中定义的,而字节输出流的超类0utputStream实现了该接口,这以为这
所有字节输出流都具有该方法。
但是只有缓冲流真正实现了flush应有的功能。其他的高级流flush方法的实现都是调用其连接的流的
fLush方法,将该动作传递下去
③底层运行图:
3.字节流—对象流(高级流):java.io.ObjectOutputStream和ObjectIntputStream
功能:是进行对象的序列化与反序列化
对象序列化:将一个java对象转换为一组字节的过程称为对象序列化
①void writeObjct():进行对象的序列化
②Object readObject():
对象输入流的readobject方法可以进行对象的反序列化注意:对象输入流通过下面连接的流读取的字节
必须是对象输出流序列化一个对象后的一组字节,否则会抛出异常:CTassNotFoundException
对象输出流在序列化对象时可能引发异常:java.io.NotSerializableException: io.Person
原因:当序列化的对象没有实现接口:java.io.Serializable时出现上述异常
剩余16页未读,继续阅读
资源评论
一只小白啊啊
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功