一、File类

1.java.io.File类代表系统文件(文件和目录)

访问文件属性步骤

1). 创建文件对象:File file = new File(String pathname);

2). 调用方法:操作文件或目录的属性(路径、权限、日期和时间);

File类就是用来操作文件或目录,将文件和目录作为对象进行操作。

2.File类的属性

seperator默认名称分割符:在linux系统上此字段的值为‘/’;在windows系统中。它为'\\'

为了程序的跨平台使用的特性,层级目录之间的分隔符应该用这个属性值来代表。

3.File类的常用方法

boolean exists() : 判断文件或者目录是否存在;

boolean isFile(): 判断是否是文件;

boolean isDirectory(): 判断是否是目录;

String getName(): 返回此对象表示的文件或者目录的名称;

String getPath(): 返回此对象表示的文件的相对路径名;

String getAbsolutepath(): 返回此对象代表的文件的绝对路径名

boolean delete(): 删除此对象指定的文件或目录;;

boolean createNewFile(): 创建名称的空文件,不创建文件夹;

long length(): 返回文件的长度,单位为字节,如果文件不存在,则返回0L;

boolean mkdir(): 创建此抽象路径名称指定的目录;

boolean mkdirs(): 创建此抽象路径名称指定的目录,包括所有必须但不存在的父目录;

String[] list(): 返回此目录中的文件名和目录名的数组;

File[] listFiles(): 返回此目录中的文件和目录得到File实例数组:

4.使用File类操作一下文件试试:

4.1创建文件/删除we

package filedemo;import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) {File file = new File("e:"+File.separator+"test.txt");if(file.exists()){ //判断该文件是否存在file.delete();System.out.println("文件已删除");}else{try {file.createNewFile(); //文件不存在的话就创建System.out.println("文件创建成功~");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}

4.2遍历指定目录下的的目录和文件

package filedemo;import java.io.File;public class ListFiles {public static void main(String[] args) {File file = new File("e:"+File.separator);File[] lf = file.listFiles(); //获得当前目录下的文件和目录数组System.out.println(lf.length);//遍历文件数组for(File f : lf){System.out.println(f.getName());}}}

4.3 一个题:递归遍历一个目录下的所有子目录和子文件

package filedemo;import java.io.File;public class ShowAllFile {//递归遍历文件public static void showFiles(File file){//当所给文件不为空时if(file != null){ //如果所给文件对象是目录if(file.isDirectory()){File[] lf = file.listFiles();//遍历当前目录下的所有文件和目录if(lf!=null){for(int i=0;i<lf.length;i++){showFiles(lf[i]);}}}else{ //否则直接打印所给目录的名字System.out.println(file.getName());}}}public static void main(String[] args) {File f = new File("e:"+File.separator);showFiles(f);}
}

二、IO流的基本原理

数据流(Stream)是指数据通信的通道

java程序中对数据的输入、输出操作是以“流”方式进行。JDK中提供了各式的“流”类来获取不同种类的数据。

三、IO流的分类

按流向分:

输入流:程序从数据源读取数据的流

输出流:程序向数据源写入数据的流

按数据传输单位分:

字节流:以字节为单位传输数据的流

字符流:以字符为单位传输数据的流

按功能分:

节点流:用于直接操作目标设备的流

处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更为强大、灵活的读写功能

JDK提供的流位于io包中,最高层级的有四种大的抽象流类,不能直接实例化,通过子类实例化。

  输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer


四、讨论一下以上四种抽象流类

1. InputStream:字节输入流的抽象父类,其他的字节输入流类都继承自InputStream,可以用来读取文件的字节信息。

package stream;import java.io.*;public class FileInputStreamDemo {public static void main(String[] args) {File file = new File("e:"+File.separator+"test.txt");InputStream is = null;try {//获取读取的文件对象is = new FileInputStream(file);//读取文件内容int len=0;byte[] b = new byte[1024]; //设置每次读取的字节长度while((len=is.read(b))!=-1){String str = new String(b,0,len);System.out.print(str);}} catch (Exception e) {e.printStackTrace();}finally{try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}

2.  OutputStream: 字节输出流的抽象父类,其他的字节输出流的都继承自OutStreamutStream,可以通过程序向文件中写入数据

package stream;import java.io.*;public class OutputStreaDemo {public static void main(String[] args) {File file = new File("e:"+File.separator+"test.txt");OutputStream os = null;try {os = new FileOutputStream(file);String str1 = "许愿天空的里程碑!";String str2 = "许愿妖刀村正!";byte[] b1 = str1.getBytes();byte[] b2 = str2.getBytes();//int len=0;os.write(b1,0,4);os.write(b2,0,4);System.out.println("写成功了哈~");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

3. Reader类:字符输入流的抽象父类,以字符为单位读取文件内容,一个字符两个字节,应创建一个字符缓冲区读取

package stream;import java.io.*;public class FileReaderDemo {//字符输入流,读取文档字符的public static void main(String[] args) {File file = new File("e:"+File.separator+"test.txt");Reader fr = null;try {fr = new FileReader(file);//读取文档字符内容char[] c = new char[1024];  //自定义字符缓冲区int len =0;while((len=fr.read(c)) != -1){System.out.println(new String(c,0,len));}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {fr.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

4. Writer类:通过程序向文件中以字符为单位写入内容,写入后要调用flush()方法刷新缓冲区才能将缓冲区内容写入目标文件

package stream;import java.io.*;public class FileWriterDemo {public static void main(String[] args) {File file = new File("e:"+ File.separator + "test.txt");Writer w = null;try {w = new FileWriter(file,true);w.write("我是你爹,");w.write("你爹要出妖刀村正了!");w.write("你爸爸永远是你爸爸".toCharArray());w.write('h');w.flush();System.out.println("写入成功!!!");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

20170118:File类与IO流,File类,IO流的基本原理,IO流的分类,文件字节流与文件字符流相关推荐

  1. Stream流、FiLe和IO流、IO流(字节流-拷贝文件_和_字符流-读取文本中的数据写入文本文件中)9-10-11

    package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合,存 ...

  2. java 字符流与字节流区别_JAVA 字符流与字节流的区别

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  3. 75. InputStreamReader和OutputStreamWriter(转换流--字节流转换成字符流)

    转换流: InputStreamReader   输入字节流转换成输入字符流 OutputStreamWriter  输出字节流转换成输出字符流 总结:就是字节流转换成字符流,但是不能字节流转换成字节 ...

  4. .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...

    一.实操名称: 描述如下流的基本作用:文件字节流.文件字符流.缓冲字节流.缓冲字符流字节数组流.数据流.转换流.对象流二.描述1.文件字节流:包括:FileInputStream,FileOutput ...

  5. 如何将字节流转换成字符流

    如何将字节流装饰成字符流 使用情况: 当编程时需大量读写,并不知文件格式时,采用字节流进行读写,再进行转换. 将字节流转换成字符流的过程被叫作转换流. 使用装饰者设计模式. 转换流: InputStr ...

  6. java 文件字节流_Java:文件字符流和字节流的输入和输出

    最近在学习Java,所以就总结一篇文件字节流和字符流的输入和输出. 总的来说,IO流分类如下: 输入输出方向:     输入流(从外设读取到内存)和输出流(从内存输出到外设) 数据的操作方式: 字节流 ...

  7. java读取字节效率最高_java中字节流读写和字符流读写怎么理解?哪个效率更高...

    我们java中的io流分为两大类,字节流和字符流. 可是在具体使用的时候怎么视情况进行使用? 怎么使用更加有效率? 有两个例子,帮忙看看解释一下,用哪种比较有效率以及适用情况. 下面是用字符流进行读写 ...

  8. java字符流写入式乱码_字节流乱码与字符流乱码

    本文总结自:https://blog.csdn.net/mingliangniwo/article/details/44178491 前提:数据展示过程:数据写入response容器,浏览器解析res ...

  9. 从字节流到字符流的装换

    引用地址:https://blog.csdn.net/lzh_86/article/details/78107597 System.in的类型可以归结为节点流.字节流.输入流: InputStream ...

最新文章

  1. 阿尔法特磁悬浮制冷机组荣获“2016年度中国数据中心优秀节能产品”殊荣
  2. ASP.NET Razor – C# 逻辑条件简介
  3. JavaIO(输入输出)——字节流读写文件
  4. 【position也可以很复杂】当弹出层遇上了鼠标定位(上)
  5. ACL在路由器上设置例子
  6. sql 2008日志增长过快_SQL语句引起的空间暴增分析
  7. Observer的实现
  8. 带你读AI论文丨LaneNet基于实体分割的端到端车道线检测
  9. javascript MouseEvent对象
  10. Hadoop日记Day13---使用hadoop自定义类型处理手机上网日志
  11. SSH和SSM对比(学完后的总结)
  12. 基于TCP/IP的IEC60870-5-104远动通信协议
  13. Java 合并 取消合并 Excel 单元格
  14. java怎么遵循ws规范,WS-BPEL语言基础
  15. 新入职公司离职率高怎么办
  16. P6207 [USACO06OCT] Cows on Skates G
  17. 手机端API框架流程(学习笔记)
  18. PCD格式、Trimmed ICP实现、旋转矩阵四元数欧拉角
  19. 如何使用Joplin搭建私有笔记软件
  20. 慎用cv::fitLine

热门文章

  1. mysql手机号码不重复_如何批量生成MySQL不重复手机号大表实例代码
  2. Mysql: 表中数据的增删改
  3. 高速电路设计基本概念之——stitching via/aggressor via
  4. 电信上信号4g显示无服务器,电信手机信号显示4G+是什么网络?很多人不清楚,原因在这里...
  5. 如何正确挑选一台适合自己的笔记本电脑
  6. 作为一名HR,如何学会做数据分析?3大层次53个关键指标
  7. Unity中用shader graph制作一个简单的传送门效果
  8. favicon.ico的三种下载方式
  9. c++遍历文件夹下所有图片
  10. 来自山西机器人乐队_完爆马云的钢铁机器人乐队!这支由三个机械臂组成的乐队帅爆了!...