java基础— File类以及IO流

一、File类的使用(用来操作路径的)
在写路径的时候,不能按照电脑中的方式写,如果使用\要写为\\,但是推荐写为/,这是只用写/,而不用写两个\\
E:\\text\\a.jpg等同于E:/text/a.jpg
给了三种构造方法:
1.只传路径
2.路径分开为两部分写
3.把前面的路径封装为一个file对象

File file = new File("C:/");
File file2 = new File(file,"c.jpg");

二、相对路径和绝对路径
相对路径是相对于当前项目来讲的,而绝对路径通常是写死的,并且以盘符开头
三、创建和删除功能

//首先要封装好文件或者目录,才可以调用下面的方法
		//createNewFile(),创建一个文件,
		//mkdir(),创建一个文件目录,单级
		//mkdirs(),创建一个文件目录,多级
		//delet(),删除文件(夹),java中删除不走回收站,如果文件夹不为空,则不能删除
		File file = new File("a.txt");
		boolean flag = file.createNewFile();

四、获取功能

//首先要封装好文件或者目录,才可以调用下面的方法
		//getName(),获取文件(夹)的名字
		//length(),只能统计文件大小,而不可以是文件夹
		File file = new File("a.txt");
		String a = file.getName();
		System.out.println(a);//结果为a.txt

五、判断功能

//首先要封装好文件或者目录,才可以调用下面的方法
		//exists(),文件(夹)是否存在
		//isFile是否是文件
		//isDirectory是否是文件夹
		File file = new File("a.txt");
		boolean a = file.isDirectory();

六、其他方法

//list(),得到指定目录下的所有文件(夹)的名称数组
//listFiles(),得到指定目录下的所有文件(夹)的对象数组
File file = new File("C:\\");
String[] file1 = file.list();
File[] file2 = file.listFiles();

IO流

I:input , O:output 就是用来传输数据的
按流向分类:输入流输出流
按操作分:
++字节流:以字节为单位操作数据 。
+++++字节输入流:InputStream
+++++字节输出流:OutputStream
++字符流:以字符为单位操作数据
+++++字符输入流:Reader
+++++字符输出流:Writer
以上都是抽象的类,子类是在前加上File.
IO流的顶层都是抽象类,集合的顶层都是接口

计算机最基本的存储单位是:字节
在GBK码表中,一个中文汉字占两个字节,在UTF-8中占3个字节。数字字母特殊符号,不论在什么码表中,都是占据一个字节。他们都包含ASCII码表。ASCII码表描述的就是char和int之间的关系。char的范围是0-65535,char类型表示的是字符。a:97,A:65,0:48。以为肯定会有超出这个范围的,所以就出现了GBK和UTF-8这些码表。
什么时候使用字节流,什么时候使用字符流?
字节流:可以操作任意文件类型,但是操作中文的时候,可能会出现乱码,因为根据你的读取字节不同,因为一个汉字是两个字节,当你一次性读取两个字节时,不会出现乱码,但是你一次读取三个时,则会出现乱码。
字符流:专门操作中文文件的。当一个文件能够用微软自带的记事本打开,并且内容没有乱码时,可以考虑用字符流。
字节流和字符流的转换

FileInputStream files = new FileInputStream("a.txt");
InputStreamReader isr = new InputStreamReader(files);
byte[] bytes = new byte[3];
int len = files.read(bytes);
System.out.println(new String(bytes,0,len));
//一次读取一个指定长度的字节数组,并将读取到的内容放到字节数组中,并且返回读取到的有效字节数,读不到返回-1;
//String中有方法将字节数组,转换为String,String(给一个字节数组,从哪里开始,到哪里结束)
//创建字节流输入对象
FileInputStream files = new FileInputStream("a.txt");
//读取数据,一次读取一个字节,并返回对应的ASCII码值,如果没有读到返回-1
//读取后输出
int ch=0;
while((ch = files.read())!=-1){
System.out.println((char)ch);
}
//关闭流
files.close( );
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值