由于IDEA相对于我这种新手来说,对学习JAVA还是比较方便,后记都移步到IDEA中进行基础学习

1.File(文件类)

  尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系 统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属 性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。 此外,File还浏览子目录层次结构。 很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到 严格限制,文件仍是存储固定和共享信息的主要资源。Java中的目录当成File 对待,它具 有附加的属性——一个可以被 list( )方法检测的文件名列表。 下面的构造函数可以用来生成File 对象: File(String directoryPath) File(String directoryPath, String filename) File(File dirObj, String filename) 这里,directoryPath是文件的路径名,filename

  1. //递归测试File类的功能
    public void TestJavaIO(String filePath) {
    try {
    FilenameFilterDemo fnfd=new FilenameFilterDemo(".php");
    File f1 = new File(filePath);
    Print("File name:" + f1.getName());
    Print("Path:" + f1.getPath());
    Print("Aba Path:" + f1.getAbsolutePath());
    Print("f1 exists:" + (f1.exists() ? "existes" : "not existes"));
    Print("f1 can read" + (f1.canRead() ? " yes" : "no "));
  2.  
  3. if (f1.isDirectory()) {
    Print("Diretory of " + f1.getName());
    String[] files = f1.list(fnfd);
    for (int i = 0; i < files.length; i++) {
    File f = new File(f1.getPath() + "/" + files[i]);
    if (f.isDirectory()) {
    Print(files[i] + " is a diretory");
    TestJavaIO(f.getPath());
    } else {
    Print(files[i] + " is a file");
    }
    }
    } else {
    Print("F1 is not a Directory");
    }
  4.  
  5. } catch (Exception e) {
    throw e;
    }
    }
  1. public class FilenameFilterDemo implements FilenameFilter {
    String _ext;
  2.  
  3. public FilenameFilterDemo(String ext) {
    this._ext = ext;
    }
  4.  
  5. @Override
    public boolean accept(File dir, String name) {
    return name.contains(_ext);
    }
    }
  6.  
  7. 注意:list()只有 FilenameFilter 这个重构
    listFiles() filefilterFilenameFilter两种重构
  8. 2.流类 Java 的流式输入/输出建立在四个抽象类的基础上:InputStreamabstact), OutputStream
  1. abstact, ReaderabstactWriterabstact
  1. InputStream OutputStream 设计成字节流类。Reader Writer 为字符流设计。一般说来,处理字符或字符串时应使用字符流类, 处理字节或二进制对象时应用字节流类
  2. void write(int b) 向输出流写入单个字节。注意参数是一个整型数,它允许你不 必把参数转换成字节型就可以调用write() ----》返回读取字符的nicode编码
    void write(byte buffer[ ]) 向一个输出流写一个完整的字节数组 ---》读取 byte个字节到 buffer中去 可以用 String(byte[]) 来获取读取的读取的内容
  1. 3.FileInputStream(文件输入流) 文件读取流
    FileInputStream 类创建一个能从文件读取字节的InputStream 类,
    它的两个常用的构造
    函数如下:
    FileInputStream(String filepath)
    FileInputStream(File fileObj)
    eg:
    FileInputStream f0 = new FileInputStream("/autoexec.bat")
  2. File f = new File("/autoexec.bat");
    FileInputStream f1 = new FileInputStream(f);
  3. 4.FileOutputStream(文件输出流) 文件写入流
  4. FileOutputStream 创建了一个可以向文件写入字节的类OutputStream
    它常用的构造函 数如下:
    FileOutputStream(String filePath)
    FileOutputStream(File fileObj)
    FileOutputStream(String filePath, boolean append)
  5. 5.ByteArrayOutputStream 字节输入流(读取) ByteArrayInputStream 字节输出流(写入)
  1. 6.缓冲字节流 对于字节流,缓冲流(buffered stream),通过把内存缓冲器连到输入/输出流扩展一个 过滤流类。
  2. 该缓冲器允许Java对多个字节同时进行输入/输出操作,提高了程序性能。因为 缓冲器可用,所以可以跳过、标记和重新设置流。
    缓冲字节流类是BufferedInputStream BufferedOutputStreamPushbackInputStream 也可实现缓冲流。
    BufferedInputStream(缓冲输入流) 缓冲输入/输出是一个非常普通的性能优化。
    Java BufferedInputStream 类允许把任何 InputStream 类“包装”成缓冲流并使它的性能提高。
    BufferedInputStream 有两个构造函数:
    BufferedInputStream(InputStream inputStream)
    BufferedInputStream(InputStream inputStream, int bufSize)
  3.  
  4. 注意:输入流没有直接的toString()方法可用的,而输出流是可以直接toString(),可以理解为,输入流是指向流的一个指针,所以,不存储相应的实际内容,而输入流是把内容读入流中,再写入相应的文件的。

7.Reader/writer  是定义流式字符输入输出的抽象类

a.FileReader -> CharArrayReader

CharArrayReader 是一个把字符数组作为源的输入流的实现。

该类有两个构造函数,每 一个都需要一个字符数组提供数据源:

CharArrayReader(char array[ ])

CharArrayReader(char array[ ], int start, int numChars)

b. FilerWriter

JAVA-基础(六) Java.io的更多相关文章

  1. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  2. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

  3. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  4. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  5. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  6. Java基础-使用JAVA代码剖析MD5算法实现过程

    Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Java基础系列8——IO流超详细总结

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 在初学Java时,I ...

  8. 黑马程序员——【Java基础】——Java概述

    ---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向I ...

  9. java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  10. 【Java基础】- Java学习路线图

    Java的学习路线图,整理以备自己学习和温习. 1.Java基础 具体内容: 1. 编程基础(开发环境配置.基础语法.基本数据类型.流程控制.常用工具类) 2. 面向对象(继承.封装.多态.抽象类.接 ...

随机推荐

  1. 5.类型、值和变量-JavaScript权威指南笔记

    开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并 ...

  2. R语言笔记2

    <13: Simulation> > sample(1:6,4,replace=TRUE) [1] 4 5 2 6 在1-6的整数中随机生成4个整数,且数字可以重复,即每个数字均可重 ...

  3. SQL查询-约束-多表

    一.SQL语句查询     1.聚合函数         COUNT()函数,统计表中记录的总数量         注:COUNT()返回的值为Long类型;可通过Long类的intValue()方法 ...

  4. 1.2 the structure of a compiler

    Compiler 1.2 the structure  of a compiler Compiler : analysis and synthesis syntactically  语法上的 sema ...

  5. 【虚拟机-网络IP】如何开放 Azure 虚拟机 Ping 功能

    前言 文章<使用 PsPing & PaPing 进行 TCP 端口连通性测试>中提到,ICMP 协议的数据包无法通过 Azure 的防火墙和负载均衡器,所以不能直接使用 Ping ...

  6. win10 ,本地连接无法识别网络 ,无线正常,

    win10 ,本地连接无法识别网络  ,无线正常, 电脑诊断是:“此计算机上缺少一个或者多个网络协议” 1.手动设置ip                          失败 2.网卡卸载驱动   ...

  7. 【Python图像特征的音乐序列生成】如何标记照片的特征

    目前我能想到的办法是这样的: 1,提取照片中的实体特征,借用某个pre-trained model进行tag标记. 2,将特征组合起来,形成一个bag-of-word model,然后将这个向量作为输 ...

  8. 让您的Eclipse具有千变万化的外观

    大家每天用Eclipse做Java开发,是否厌倦了Eclipse千篇一律的白色背景呢? 看看Jerry这几种不同风格的Eclipse外观,是不是有耳目一新的感觉?如何做到的? 需要给Eclipse安装 ...

  9. SAP GUI里Screen Painter的工作原理

    我们在SAP GUI里双击一个screen编号: 单击Layout按钮可以打开Screen Painter: 这背后的工作原理是什么? 是这个RFC destination在起作用: Connecti ...

  10. Tarjan的学习笔记 求割边求割点

    博主图论比较弱,搜了模版也不会用... 所以决心学习下tarjan算法. 割点和割边的概念不在赘述,tarjan能在线性时间复杂度内求出割边. 重要的概念:时间戟,就是一个全局变量clock记录访问结 ...