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. Java 代理模式(二) Java中的动态代理

    动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及到以下两个类: 1.Interface InvocationHandler 该接口中仅定义了一个方法: Objec ...

  2. 企业搜索引擎开发之连接器connector(十九)

    连接器是基于http协议通过推模式(push)向数据接收服务端推送数据,即xmlfeed格式数据(xml格式),其发送数据接口命名为Pusher Pusher接口定义了与发送数据相关的方法 publi ...

  3. TSQL--NULL值和三值逻辑

    在SQL SERVER 中逻辑表达式存在三种值:TRUE+FALSE+UNKNOWN.UNKNOW可以理解为不确定,既不是TRUE又不是FALSE的表达式,主要由与NULL相关的逻辑判断引起,值为NU ...

  4. xml与json的区别和总结

    JSON和XML的比较 ◆可读性 JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负. ◆可扩展性 XML天生有很好的扩展性,JSON当然也有,没有什么是XML ...

  5. awk中NF的使用

    统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   一下子不明白$NF是什么意 ...

  6. JS 获取当前日期的前一天日期(年月日格式)

    var time = (new Date).getTime() - 24 * 60 * 60 * 1000;var yesday = new Date(time); // 获取的是前一天日期yesda ...

  7. CSharp读取json配置文件内容

    步骤 读取配置文件转换成字符串,代码如下 string contents = System.IO.File.ReadAllText("config.json"); 注意:该语句会抛 ...

  8. LOJ#6360. 复燃「恋之埋火」(最小圆覆盖+高斯消元)

    题面 传送门 题解 不难发现最小圆覆盖的随机增量法复杂度还是正确的 所以现在唯一的问题就是给定若干个点如何求一个\(m\)维的圆 其实就是这一题 //minamoto #include<bits ...

  9. Linux(Ubuntu)配置问题集

    Cannot set LC_CTYPE to default locale: No such file or directory 安装Ubuntu Server版本(不带桌面环境)时,如果安装时的语言 ...

  10. 爬虫7:selenium

    1. 一个简单的使用例子 from selenium import webdriver from selenium.webdriver.common.by import By from seleniu ...