之前学习java io流的时候总觉得云里雾里,所以现在在来总结一下。

一.什么是io流

io流是用来处理设备之间的数据传输的,java对数据的操作是通过流的方式。java用于操作流的对象都存在于

java.io包中。其实,所谓的io流,就是一种系统资源,因为对数据的操作(例如保存)是window操作系统自带的,例

如,在记事本中写一段文本,那么这段文本就存在于内存中,保存之后,那么这段文本就从内存到了硬盘中,这个操

作就用到了window自带的输出流(写操作)。各种语言只是提供对这种系统资源的api。

二.文件File类的构造和分隔符问题

设备上数据存储最常见的表现形式为文件。File类能操作文件和目录(文件夹)。

通过文件路径来将文件封装成一个对象,常用的有3中方式,代码如下:

package com.java.IO;import java.io.File;public class FileDemo {//这里提一下,private修饰的属性只能本类可以访问,其他类不能通过对象.属性和类名.属性的方式来访问private static final String FILE_SEPARATOR = System.getProperty("file.separator");public static void main(String[] args) {//通过文件路径直接创建对象,相对路径是相对的是当前项目的项目名,既可以将存在的路径封装为对象,也可以将不存在的路径封装为对象File file=new File("abc\\1.txt");//将文件路径拆分为两部分在创建对象File file2=new File("c:\\","1.txt");//通过文件对象和路径来创建对象File file3=new File("c:\\");File file4=new File(file3,"1.txt");/*这里要注意的是不同的操作系统所用到的文件分隔符是不同的,所以将java文件导入不同的操作系统中会出现问题*我们有两种解决方式,一种,通过System类来获得文件分隔符,第二种是通过File类来获得,并且在java中写*文件分隔符要用‘\\’来将‘\’进行转义。*/File file5=new File("c:"+FILE_SEPARATOR+"1.txt");   //   System.out.println(file5);   c:\1.txtFile file6=new File("c:"+File.separator+"1.txt");System.out.println(file6);}
}

三.File类中获取文件属性的常用方法

package com.java.IO;import java.io.File;public class FileDemo2 {public static void main(String[] args) {File file=new File("f:\\ioDemo\\1.txt");File file2=new File("ioDemo\\1.txt");//获取文件名称System.out.println(file.getName());   //1.txt//获取文件大小System.out.println(file.length());    //25//获取文件类型,这个java不支持,因为文件的类型是可以自定义的,所以提供类型没有意义//获取文件的路径,比较getParent()和getPath()的区别System.out.println(file.getParent()); //f:\ioDemoSystem.out.println(file.getPath());   //f:\ioDemo\1.txt//获取文件的相对路径System.out.println(file2.getParent());   //ioDemoSystem.out.println(file2.getPath());     //ioDemo\1.txt}
}

四.文件和文件夹的创建和删除

package com.java.IO;import java.io.File;
import java.io.IOException;public class FileDemo3 {public static void main(String[] args) throws IOException {//创建文件。当文件存在时,返回false。当文件不存在时,创建文件,返回true。File file=new File("f:\\ioDemo\\2.txt");boolean result=file.createNewFile();/*删除文件。当文件删除成功时,返回true,删除未成功时,返回false。例如:* 当文件被应用程序占用时,就会删除失败*///    boolean result_delete=file.delete();//创建一级文件夹File file2=new File("f:\\ioDemo\\abc");boolean result2=file2.mkdir();//删除一级目录boolean result_delete2=file2.delete();//创建多级目录File file3=new File("f:\\ioDemo\\abcd\\abc");boolean result3=file3.mkdirs();/*删除多级目录时,如果文件夹中有内容,那么文件夹将删除失败* *//*不能凭借肉眼主观来断定一个文件到底是文件夹过着文件,要使用方法来辨别* 因为,文件可能不带后缀名,文件夹也可能有“后缀名”。*/file.isFile();file.isDirectory();//另外,获取文件绝对路径的方法String getAbsolutePath = file.getAbsolutePath();System.out.println(getAbsolutePath);   //f:\ioDemo\2.txt}
}

五.list()方法和listFiles()方法

package com.java.IO;import java.io.File;public class FileDemo4 {public static void main(String[] args) {//获取指定路径下所有文件和文件夹的名称。包含隐藏文件和非隐藏文件File file=new File("f:\\");String[] strs=file.list();for(String str:strs) {System.out.println(str);}//获取指定路径下所有文件和文件夹。包含隐藏文件和非隐藏文件File[] files=file.listFiles();for(File file1:files) {System.out.println(file1);}
/*    $RECYCLE.BIN1111.txtBaiduNetdiskDownloadDevelopmentDownLoadRecord.inieclipse-workspaceGameDownloadHlddzHldnioioDemoKuGouMyEclipse2017IWorkSpacesProgram FilesQLDownloadSystem Volume InformationTraining template(JAVA)Windows10Upgrade腾讯游戏f:\$RECYCLE.BINf:\1111.txtf:\BaiduNetdiskDownloadf:\Developmentf:\DownLoadRecord.inif:\eclipse-workspacef:\GameDownloadf:\Hlddzf:\Hldnf:\iof:\ioDemof:\KuGouf:\MyEclipse2017IWorkSpacesf:\Program Filesf:\QLDownloadf:\System Volume Informationf:\Training template(JAVA)f:\Windows10Upgradef:\腾讯游戏
*/}
}

六.文件名过滤器

      1.验证部分代码:

package com.java.IO;import java.io.File;
import java.io.FilenameFilter;public class FileDemo5 {public static void main(String[] args) {//通过后缀名来过滤文件File file=new File("f:\\");FilenameFilter fileNameBy=new FileNameBySuffix("space");fileNameBy=new FileNameByContains("d");String[] strs=file.list(fileNameBy);for(String str:strs) {System.out.println(str);   // 第一个过滤器:eclipse-workspace//第二个过滤器:QLDownload}}
}

 2.所定义的过滤器:

package com.java.IO;import java.io.File;
import java.io.FilenameFilter;public class FileNameBySuffix implements FilenameFilter {private String filterMethod;public FileNameBySuffix(String filterMethod) {this.filterMethod=filterMethod;}@Overridepublic boolean accept(File dir, String name) {return name.endsWith(filterMethod);}}
class FileNameByContains implements FilenameFilter{private String filterMethod;public FileNameByContains(String filterMethod) {this.filterMethod=filterMethod;}@Overridepublic boolean accept(File dir, String name) {return name.contains(filterMethod);}}

七.文件过滤器

1.定义测试代码:

package com.java.IO;import java.io.File;
import java.io.FileFilter;public class FileFilterDeml {public static void main(String[] args) {//定义文件过滤器File file=new File("f:\\");//过滤   f盘下所有的文件FileFilter fileFilter=new FileFilterImp();//过滤  f盘下所有后缀名为 space的文件或文件夹fileFilter=new FileFilterImp2("space");File[] files=file.listFiles(fileFilter);for(File file1:files) {System.out.println(file1);  //第一个过滤器:f:\1111.txt       f:\DownLoadRecord.ini//第二个过滤器:f:\eclipse-workspace} }
}

    2.定义文件过滤器

package com.java.IO;import java.io.File;
import java.io.FileFilter;public class FileFilterImp implements FileFilter{@Overridepublic boolean accept(File pathname) {return pathname.isFile();}}
class FileFilterImp2 implements FileFilter{private String filter_method;public FileFilterImp2(String filter_method) {this.filter_method=filter_method;}@Overridepublic boolean accept(File pathname) {return pathname.getName().endsWith(filter_method);}}

  在学习 io,将会从 获取子目录中的内容  开始。

Java中的IO流基础(1)相关推荐

  1. 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础

    06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍  Eclipse断点调试  基 ...

  2. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  3. java io流分为,Java中的IO流按照传输数据不同,可分为和

    Java中的IO流按照传输数据不同,可分为和 答:字节流 字符流 克里斯蒂安 · 麦茨指出:想象的能指就是电影的能指,作为象征的科学,在第三视野范围内的解读,它是( ) 答:建立在共同的永久的背景之中 ...

  4. 猿创征文|Java中的IO流大家族 (两万字详解)

    目录 IO流 概述 分类 四大家族 需要掌握的16个流 文件专属 FileInputstream(读 字节) FileInputStream类的其他常用方法 FileOutputStream (写 字 ...

  5. java中的IO流(超全)(超详解)结合实例轻松掌握

    java进阶之IO流 IO流的概念(大纲): 1.InputStream和OutputStream的继承关系图 2.Reader和Writer的继承关系图 3.文件专属流(加※为重点掌握) ※File ...

  6. java中关于IO流的知识总结(重点介绍文件流的使用)

    今天做软件构造实验一的时候,用到了java文件流的使用,因为之前学的不是很踏实,于是决定今天好好总结一下, 也方便以后的回顾. 首先,要分清IO流中的一些基础划分: 按照数据流的方向不同可以分为:输入 ...

  7. Java中的IO流与Properties

    IO流 1 File 1.1 File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一 ...

  8. Java中的IO流(最详细解说)

    IO流 一.File类的使用 1.常用构造器 2.路径分隔符 3.常用方法 二.IO流原理 Java IO原理 三.流的分类 1.输入流 (1)InputStream & Reader (2) ...

  9. io流技术java_技术文章-java中的IO流

    1.File类 Java中对文件有操作时,可以实例化一个File对象,将文件路径利用这样的形式赋给File对象. File f = new File(filePath); File类的基本操作包括: ...

  10. Java中的IO流修改

    Java.IO Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. Java. ...

最新文章

  1. 三同轴连接器_罗森伯格射频同轴连接器之板间连接器三
  2. 快速排序 java 实现
  3. java线程 demo_Java多线程demo
  4. struts2学习笔记之十一:struts2的类型转换器
  5. fastjson 序列化时指定json的key值
  6. 机器学习之开源库大总结
  7. Notepad++ WebEdit插件
  8. 医院药品管理系统丨医药商城系统(Java+Web+MySQL)
  9. revit二次开发——过滤器基础
  10. 老路教你用得上的商学课_系列笔记
  11. Opencv 轮廓提取
  12. 京东云主机使用-搭建简单网页(macOS)
  13. 第一章 数据仓库理论专题
  14. 原创经典-为什么Spring中的IOC(控制反转)能够降低耦合性(解耦)?
  15. 1072: 青蛙爬井 Java
  16. 查看java安装路径[linux]
  17. 今天,小灰36岁了!
  18. C语言常见的编程题(1)
  19. 每次开机启动都会创建图标和修改锁定任务栏浏览器的主页
  20. SparkStreaming-相关窗口操作

热门文章

  1. 废旧笔记本打造黑群晖NAS,docker,软路由,实现我心目中的all in one,包含fx n1,玩客云老母鸡玩法
  2. 《高效能人士的7个习惯》PDF,复习笔记(上)
  3. python urlencode函数_Python urlencode和unquote函数使用实例解析
  4. 基于无线发射接收物体远离报警器的设计
  5. AUTOCAD——中心缩放
  6. Odoo12功能增强模块
  7. C++高阶 每个对象都有一个this指针
  8. 第1章第10节:如何使用PowerPoint的视图功能 [PowerPoint精美幻灯片实战教程]
  9. 数据结构-左倾红黑树
  10. 特征值、特征向量及相似矩阵