Java语法基础学习DayFourteen(IO)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java语法基础学习DayFourteen(IO),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6526字,纯文字阅读大概需要10分钟。
内容图文
一、java.io.FIle类
1.特点
(1)凡是与输入、输出相关的类、接口等都定义在java.io包下。
(2)File是一个类,使用构造器创建对象,此对象对应一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
(3)FIle类对象与平台无关,具有跨平台性
(4)File中的方法,仅涉及到如何创建、删除、重命名等等,如果涉及文件内容的操作,File是无能为力的,必须由io流来实现。
(5)代码示例
import java.io.File; class Test{ public static void main(String[] args){ File file1 = new File("G:/LSF/java_learn/helloworld.txt");//路径中的/也可以换成\\ File file2 = new File("helloworld.txt");//相对路径,文件放在当前项目下 File file3 = new File("G:\\LSF\\java_learn");//可以对应一个文件目录 } }
2.File对象的方法
getName():获取文件名
getPath():获取路径
getAbsoluteFile():获取绝对文件名,带着路径
getAbsolutePath():获取绝对路径
getParent():获取上一级的路径
renameTo(File newName):文件对象重命名为newName,路径也随之改变
File file1 = new File("G:/LSF/java_learn/helloworld.txt");//路径中的/也可以换成\\。 File file2 = new File("helloworld2.txt"); System.out.println(file1.getName());//helloworld.txt System.out.println(file1.getPath());//G:\LSF\java_learn\helloworld.txt System.out.println(file1.getAbsoluteFile());//G:\LSF\java_learn\helloworld.txt System.out.println(file1.getAbsolutePath());//G:\LSF\java_learn\helloworld.txt System.out.println(file1.getParent());//G:\LSF\java_learn //file1.renameTo(file2):file1重命名为file2,要求是file1文件真实存在,file2文件不存在。重命名后原路径找不到file1,file1跑到了file2路径下 boolean b = file1.renameTo(file2); System.out.println(b);//返回true
exists():判断对象是否存在
canWrite():判断是否能写入
canRead():判断是否能读取
isFile():判断是否是文件
isDirectory():判断是否是文件目录
lastModified():返回最后一次修改的时间
length():返回文件内容的字符长度
System.out.println(file1.exists());//true System.out.println(file1.canWrite());//true System.out.println(file1.canRead());//true System.out.println(file1.isFile());//true System.out.println(file1.isDirectory());//false System.out.println(new Date(file1.lastModified()));//Sun Mar 17 14:37:31 CST 2019 System.out.println(file1.length());//7,文件内容是”abcdefg“
createNewFile():若对象文件不存在,创建该文件
delete():删除对象对应的文件
mkdir():创建一个文件目录,只有在上层文件目录存在的情况下才能创建成功
mkdirs():创建一个文件目录,若上层文件目录不存在,都创建出来
list():以字符串数组的形式返回对象文件目录下的所有文件名
listFiles():以文件数组的形式返回对象文件目录下的所有文件对象
File file1 = new File("G:\\LSF\\java_learn\\helloworld.txt"); System.out.println(file1.delete());//true if(!file1.exists()){ boolean b = file1.createNewFile(); System.out.println(b);//true } File file2 = new File("G:\\LSF\\abc"); if(!file2.exists()){ boolean b = file2.mkdir();//若LSF目录不存在,返回false;需要使用mkdirs()去创建 System.out.println(b);//true } File file3 = new File("G:\\LSF\\java_learn"); String[] strs = file3.list(); for(int i = 0;i < strs.length;i++){ System.out.println(strs[i]); } File[] files = file3.listFiles(); for(int i = 0;i < files.length;i++){ System.out.println(files[i].getName()); }
二、IO流
1.概述
IO流用来处理设备间的数据传输。java.io包下提供了各种“流”类和接口,用来获取不同种类的数据,并通过标准的方法输入和输出数据。
输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
输出output:将程序(内存)数据读取到磁光盘等存储设备中。
2.流的分类
(1)
按操作数据单位不同分为:字节流(8 bit)、字符流(16 bit)
按数据流向不同分为:输入流、输出流
按流的角色不同分为:节点流(文件流)、处理流
(2)
抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
Java的IO流共涉及40多个类,实际上非常规则,都是从上面四个抽象基类派生出来的。
由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
3.IO的体系
抽象基类 节点流(文件流) 处理流
InputStream FileInputStream
OutputStream FileOutputStream
Reader FileReader
Writer FileWriter
4.FileInputStream的使用
//从硬盘中存在的一个文件,读取其内容到程序中,使用FileInputStream //使用try-catch的方式处理异常保证文件流的关闭;如果直接throws异常,可能导致文件流没有关闭。 FileInputStream fis = null; try{ //1.创建一个File类对象 File file1 = new File("helloworld.txt"); //2.创建一个FileInputStream类的对象 fis = new FileInputStream(file1); //3.调用FileInputStream的方法,实现File文件的读取 //read():读取文件的一个字节,当执行到文件结尾时返回-1 int b; while((b=fis.read()) != -1){ System.out.print((char)b);//输出abcdefg } }catch(IOException e){ e.printStackTrace(); }finally{ //4.关闭流 if(fis != null){ try{ fis.close(); }catch(IOException e){ e.printStackTrace(); } } }
一个read读取多个字节的方法:FileInputStream类的read(byte[] b)方法,详见代码:
byte[] b = new byte[5];//将读取到的数据放入这个数组,数组长度为每次读取数据的最大长度 int len;//每次读入到数组中的实际字节长度 while((len = fis.read(b)) != -1){//FileInputStream类中重写了read方法,可以传入一个byte数组类型的形参,返回值是传入数组的字节长度,若读取结束,返回-1 for(int i = 0;i < len;i++){ System.out.print((char)b[i]); } }
5.FileOutputStream的使用
//往硬盘中的文件写入数据,使用FileOutputStream //1.创建一个File类对象 //输出的物理文件可以不存在,执行过程中会自动创建;若已经存在,会把原有的数据覆盖掉。 File file = new File("helloworld2.txt"); //2.创建一个FileOutputStream类的对象 FileOutputStream fos = null; try{ fos = new FileOutputStream(file); //3.写入操作 fos.write(new String("The destination is stars and seas!").getBytes());//调用String的getBytes方法转换成字节类型 }catch(IOException e){ e.printStackTrace(); }finally{ //4.关闭流 if(fos != null){ try{ fos.close(); }catch(IOException e){ e.printStackTrace(); } } }
复制文件的方法(不只是文本文件,视频文件、音频文件、图片也可以)
//从硬盘读出一个文件,并写入另一个位置。(相当于文件的复制) File file1 = new File("helloworld2.txt"); File file2 = new File("helloworld3.txt"); FileOutputStream fos = null; FileInputStream fis = null; try{ fis = new FileInputStream(file1); fos = new FileOutputStream(file2); byte[] b = new byte[20];//长度自行斟酌 int len; while((len = fis.read(b)) != -1){ //错误的写法:fos.write(b);或者fos.write(b,0,b.length); fos.write(b,0,len);//写入b数组的从第0个到第len个数据 } }catch(IOException e){ e.printStackTrace(); }finally{ //关闭流 if(fis != null){ try{ fis.close(); }catch(IOException e){ e.printStackTrace(); } } if(fos != null){ try{ fos.close(); }catch(IOException e){ e.printStackTrace(); } } }
6.FileReader、FileWriter的使用
(1)基本操作和FileInputStream基本相同,只是处理数据的单位是字符。
(2)对于非文本文件(视频文件、音频文件、图片),只能使用字节流!
内容总结
以上是互联网集市为您收集整理的Java语法基础学习DayFourteen(IO)全部内容,希望文章能够帮你解决Java语法基础学习DayFourteen(IO)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。