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. Hdu3549 Flow Problem 2017-02-11 16:24 58人阅读 评论(0) 收藏

    Flow Problem Problem Description Network flow is a well-known difficult problem for ACMers. Given a ...

  2. ModelSim 修改测量时间显示的单位

    经常有网友问,ModelSim仿真时,测量两个点之间的时间,想显示合适的单位怎么设置,例如下图显示的两个测量光标间的时间,是以频率为单位显示的,当希望设置为以时间显示,例如ns或者ms的时候怎么办呢? ...

  3. 汉诺塔问题的算法分析与实现(Java)

    汉诺塔问题是源于印度一个古老传说的益智玩具.要求将圆盘从A柱移动到C柱规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 可以先通过3个盘子的hanoi游戏得出其算法步骤如下: if ...

  4. MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图STD

    一.CA+构造 MSP430G2553带有一个比较器Comparator_A+(CA+),其构造框图如下图所示. 二.输入 & 输出 如上图所示,比较器有一个同向输入端(V+)和一个反向输入端 ...

  5. Javascript设计模式理论与实战:组合模式

    我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端对其处理的时候要保持一致性.比如电商网站中的产品订单,每一张产品订单 ...

  6. DbMigration的使用方法

    先打开:工具=>NuGet程序包管理器=>程序包管理器控制台然后输入Enable-Migrations回车然后输入Add-Migration Name回车(这里Name你可以自己命名)最后 ...

  7. Fiddler关闭后打不开网页

    今天项目系统测试的时候,CS客户端的Restful请求都失败,但是实际上的服务是正常开启的,马上通过cmd指令ping了一下服务,正常:再用telnet试了一下端口,也是正常.不过随后发现在这台电脑上 ...

  8. 关于onetoone 的2张表关联中间表的策略

    ProductCategoryVO.java 中间关联表 package com.syscxp.header.billing; import com.syscxp.header.search.SqlT ...

  9. MongoDB账号管理及实践

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...

  10. Android 的一些中文文档

    https://blog.csdn.net/qq_36467463/article/details/77990089    //安卓mediaformat api详解 https://www.cnbl ...