1:其他的流

1: DataOutputStream ;多了一些操作基本数据类型的功能

DataInputStream:读取文件。

用DataOutputStream流写进去的数据,就用DataInputStream流来读取。

 import java.io.DataInputStream;

 import java.io.DataOutputStream;

 import java.io.FileInputStream;

 import java.io.FileOutputStream;

 import java.io.IOException;

 public class DateIODemo1 {

          public static void main(String[] args) throws IOException {

                    FileOutputStream fos = new FileOutputStream("e:\\cc.txt");

                    /*

                     * 数据输出流是一种处理流,所以应该传入一个节点流作为参数

                     * 数据输出流写到文本上的内容是不是按照程序中的原样写进文件中的

                     */

                    DataOutputStream dos = new DataOutputStream(fos);

                    dos.writeInt(123);//4字节

                    dos.writeBoolean(false);//1字节

                    dos.writeDouble(12.34);//8字节

                    //数据输出流是一种处理流,所以应该传入一个节点流作为参数

                    FileInputStream fis = new FileInputStream("e:\\cc.txt");

                    DataInputStream dis = new DataInputStream(fis);

                    //按顺序读取才能读到正确的数据

                    System.out.println(dis.readInt());

                    System.out.println(dis.readBoolean());

                    System.out.println(dis.readDouble());

                    dis.close();

                    dos.close();

          }

 }

  2:关于内存的流:不用制定硬盘中的某个文件路径,因为所有的数据都是写入到内存上的,所以这些数据不会被永久保存。

      2.1 ByteArrayOutputStream;内存写入流。如果不是字符,则可以调用toByteArray方法获得内存中的数据。

 import java.io.ByteArrayOutputStream;

 import java.io.IOException;

 public class ByteArrayOutputDemo1 {

          public static void main(String[] args) throws IOException, InterruptedException {

                    ByteArrayOutputStream bos = new ByteArrayOutputStream();

                    bos.write("我写的这些东西真的放到了内存里面了".getBytes());

                    String str = bos.toString();

                    System.out.println(str);

          }

 }

2.2 ByteArrayInputStream:内存读取流。

 import java.io.ByteArrayInputStream;

 import java.io.IOException;

 public class ByteArrayInputStreamDemo1 {

          public static void main(String[] args) throws IOException {

                    byte[] b = "我真的真的在内存里面".getBytes();

                    ByteArrayInputStream bis = new ByteArrayInputStream(b);

                    byte[] b2 = new byte[1024];

                    int len = -1;

                    while((len = bis.read(b2)) != -1){

                             System.out.println(new String(b2, 0, len));

                    }       

          }

 }

3:打印流: PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

PrintStream

PrintWriter

 import java.io.BufferedReader;

 import java.io.InputStream;

 import java.io.InputStreamReader;

 import java.io.PrintStream;

 //接收键盘录入,写到文件中。

 public class PrintStreamDemo2 {

          public static void main(String[] args)throws Exception {

                    InputStream is = System.in;

                    BufferedReader br = new BufferedReader(new InputStreamReader(is));

                    //打印流。

                    PrintStream ps = new PrintStream("f:\\aaa.txt");

                    String str = null;

                    while(true){

                             str = br.readLine();

                             if("886".equals(str)){

                                      break;

                             }

                             ps.println(str);//将数据和换行写到目的地中。

                    }

                    br.close();

          }

 }

4:RandomAccessFile:随机流。这个流并不是像平时说的那样“随机”,只是程序员可以使用这个类类读取文件中指定位置的数据,或者在文件中指定是位置写入数据。关键的方法就是seek();

 import java.io.FileNotFoundException;

 import java.io.IOException;

 import java.io.RandomAccessFile;

 public class RandomAccessFiileDemo1 {

          public static void main(String[] args) throws IOException {

                    RandomAccessFile raf = new RandomAccessFile("e:\\cc.txt", "rw");

                    raf.writeBoolean(true);

                    raf.writeBytes("he");

 //               raf.writeFloat(123.99f);

                    raf.write(123);

                    raf.seek(0);//可以让指针指向文件的某个位置

                    System.out.println(raf.readBoolean());

                    System.out.println(raf.read());

                    System.out.println(raf.readInt());

                    //System.out.println(raf.readInt());

                    raf.close();

          }

 }

5:对象流.    Object   操作对象的流

这里会涉及到一个关键字transient(中文:短暂的,临时的),用来修饰成员变量。被static或者transient修饰的成员变量时改变量的值不会被对象流写出去的,也不会被读取到。对象流操作对象必须事项序列化接口Serializable,要不会出现java.io.InvalidClassException 无效的类型异常。

 import java.io.FileInputStream;

 import java.io.FileOutputStream;

 import java.io.IOException;

 import java.io.ObjectInputStream;

 import java.io.ObjectOutputStream;

 import com.java.domain.Student;

 public class WriterObjectDemo1 {

          public static void main(String[] args) throws IOException, ClassNotFoundException {

                    FileOutputStream fos = new FileOutputStream("e:\\stu.txt");

                    ObjectOutputStream oos = new ObjectOutputStream(fos);

                    oos.writeObject(new Student("zzz", 12));

                    oos.close();

                    // java.io.InvalidClassException 无效的类型异常

                    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:\\stu.txt"));

                    System.out.println(ois.readObject());

                    ois.close();

          }

 }
import java.io.Serializable;

public class Student implements Serializable {

         //使用对象

         private static final long serialVersionUID = 1L;

         private String name;

         //private static int age;

         private transient int age;

//      private int age;

         public Student() {

                   super();

                   // TODO Auto-generated constructor stub

         }

         public Student(String name, int age) {

                   super();

                   this.name = name;

                   this.age = age;

         }

         @Override

         public String toString() {

                   return "Student [name=" + name + ", age=" + age + "]";

         }

         public void test(){

         }

}

Student类

     6:文件类.     File

6.1:File:表示文件或者目录。

6.2 常用的一些方法

          delete() 删除文件或目录。

          exists() 判断文件或目录是否存在。

          getAbsoluteFile()  返回路径名的绝对路径名形式。返回值-File

          getAbsolutePath()  返回路径名的绝对路径名字符串。返回值-String

          getName() 返回由路径名表示的文件或目录的名称。

          boolean isDirectory()  路径名表示的文件是否是一个目录。

          boolean isFile()  路径名表示的文件是否是一个标准文件。

          length()  返回路径名表示的文件的长度。

String[]

list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

String[]

list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]

listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

File[]

listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]

listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

          mkdir()  创建此抽象路径名指定的目录(只能创建一层)。

          mkdirs() 创建此抽象路径名指定的目录(可创建多层)。

经典示例:

// 遍历所有文件

   public static void getFiles(String path) {

                    File file = new File(path);

                    if (!file.exists()) {

                             System.out.println("没有找到该路径或者文件");

                             return;

                    }

                    if (file.isFile()) {

                             System.out.println(file.getAbsolutePath());

                    } else {

                             System.out.println(file.getAbsolutePath());

                             File[] files = file.listFiles();

                             // 遍历文件

                             for (File file2 : files) {// 递归遍历

                                      // 如果是目录在重新调用自己

                                      getFiles(file2.getAbsolutePath());

                             }

                    }

          }

// 删除所有文件

   public static void deleteFile2(String path) {

                    File file = new File(path);

                    if (!file.exists()) {

                             return;

                    }

                    if (file.isFile()) {

                             file.delete();

                    } else {

                             File[] files = file.listFiles();

                             for (File file2 : files) {

                                      deleteFile2(file2.getAbsolutePath());

                             }

                             file.delete();

                    }

          }

IO流(三)其他流与File类的更多相关文章

  1. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

  2. 09、IO流—File类与IO流

    目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...

  3. 关于Java的File类、字节流和字符流

    一.File类: 在Windows下的路径分隔符(\)和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报No Such file or diretory异常. File中还 ...

  4. Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类

    一.Properties 类(java.util)     概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,propert ...

  5. java.io.File类

    java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...

  6. Java面向对象 IO (三)

     Java面向对象  IO  (三) 知识概要:                    (1)IO 流的操作规律                    (2)异常日志信息IO处理          ...

  7. C#文件操作基础之File类和FileInfo类

    文件和I/O流的差异: 文件是一些具有永久存储及特定顺序的字节组成的一个有序的.具有名称的集合. 因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面. I/O流提供一种后备存储写入字 ...

  8. File 类 操作实例

    File 操作 <介绍> 尽管java.io定义的大多数类是实行流式操作的,File类不是.它直接处理文件和文件系统.也就是说,File类没有指定信息怎样从文件读取或向文件存储:它描述了文 ...

  9. 【Java】File类

    File类 File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类声明在java.io包下 File类中涉及到关于文件或文件目录的创建.删除.重命名.修改时间.文件大小等方法,并 ...

  10. JAVA实现File类中的遍历操作并输出内容

    package shb.java.testIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

随机推荐

  1. 个人整理的一些iOS Entitlements

    收集了不少Entitlement,当然也肯定有遗漏.有的就是key的字面意思,就不多做解释.不过有的虽然字面意思好理解,不过具体的用处不太清楚,就写的Unknown use.在替换entitlemen ...

  2. Centos7.0安装KVM实践

    1.背景 近日将主要精力放在Linux下测试MySQL Replication,宿主机安装了Centos7.0系统,需要安装三台虚拟机.因此,尝试了一下在Centos7.0上安装虚机机. 2.安装步骤 ...

  3. eFrameWork学习笔记-eOleDB

    eOleDB是eFrameWork框架下基础的数据访问类,用于执行SQL语句,返回DataTable,分页,返回数据库所有库,库的所有表,表的所有列,Json导入.导出等. HTML: <div ...

  4. leetcode 实现strStr()

    实现strStr()函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回 ...

  5. 「NOI2014」魔法森林

    题目链接 戳我 \(Solution\) 两个变量,emm...不好搞啊. 于是我们可以按照\(A\)排序.然后动态加边,因为\(A\)是越来越大,所以不需要管他,只要使得\(1\)~\(n\)的路径 ...

  6. 201621123023《Java程序设计》第9周学习总结

    一.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 二.书面作业 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至少2种在List中删除 ...

  7. FusionCharts的使用方法 - 公司所用的flash式的图像统计工具

    我们公司一直用这个图表统计, 最近整理了一下相关文档,提供大家学习. 首先可以看看 http://www.cnblogs.com/xuhongfei/archive/2013/04/12/301688 ...

  8. 2018年Android面试题含答案--适合中高级(上)

    这些面试题是我在今年年初换工作的时候整理,没有重点.包括java基础,数据结构,网络,Android相关等等.适合中高级工程师.由于内容过多,将会分为上下两部分.下部分跳转链接:http://www. ...

  9. canvas绘制简单的霓虹灯效果

    canvas简单动画分为三个步骤: 1.清除画布区域的内容: 2.重绘: 3.执行requestAnimationFrame(); 这个霓虹灯效果的demo,我没有用requestAnimationF ...

  10. 爬虫5:beautifulsoup

      灵活方便的网页解析库,处理高效,支持多种解析器,利用它不用编写正则表达式即可方便的实现网页信息的提取     一. BeautifulSoup的几种解析库   解析器 使用方法 优势 劣势 Pyt ...