io流之inputstream、outputstream、reader、writer

例子程序:读取工作空间下

package io;
import java.io.*;
public class TestFileInputStream {
  public static void main(String[] args) {
    int b = 0;
    FileInputStream in = null;
    try {
      in = new FileInputStream("F:\\share\\workspace\\J2SE\\src\\io\\TestFileInputStream.java");
    } catch (FileNotFoundException e) {
      System.out.println("找不到文件");
      System.exit(-1);
    }
    try {
      long num = 0;
      while((b=in.read())!=-1){
        System.out.print((char)b);
        num++;
      }
      in.close();
      System.out.println();
      System.out.println("共读取了 "+num+" 个字节");
    } catch (IOException e1) {
      System.out.println("文件读取错误"); System.exit(-1);
    }
  }
}

结果:由于read方法一次读取的是一个字节,一个汉字占的2个字节,所以打印出来汉字是乱码,

package io;
import java.io.*;
public class TestFileInputStream {
  public static void main(String[] args) {
    int b = 0;
    FileInputStream in = null;
    try {
      in = new FileInputStream("F:\\share\\workspace\\J2SE\\src\\io\\TestFileInputStream.java");
    } catch (FileNotFoundException e) {
      System.out.println("æ?¾ä¸?å?°æ??件");
      System.exit(-1);
    }
    try {
      long num = 0;
      while((b=in.read())!=-1){
        System.out.print((char)b);
        num++;
      }
      in.close();
      System.out.println();
      System.out.println("å?±è¯»å??äº? "+num+" 个å­?è??");
    } catch (IOException e1) {
      System.out.println("æ??件读å??é??误"); System.exit(-1);
    }
  }
}
共读取了 737 个字节

OutputStream:

 

例子程序:文件的复制,如果文件不存在会自动创建HW.java 文件

package io;
import java.io.*;

public class TestFileOutputStream {
  public static void main(String[] args) {
      int b = 0;
      FileInputStream in = null;
      FileOutputStream out = null;
      try {
        in = new FileInputStream("f:/share/j2se/IO/HelloWorld.java");
        out = new FileOutputStream("f:/share/j2se/IO/HW.java");
        while((b=in.read())!=-1){
          out.write(b);
        }
        in.close();
        out.close();
      } catch (FileNotFoundException e2) {
        System.out.println("找不到指定文件"); System.exit(-1);
      } catch (IOException e1) {
        System.out.println("文件复制错误"); System.exit(-1);
      }
      System.out.println("文件已复制");
  }
}

 Reader:

例子程序:读取本身

package io;

import java.io.*;
public class TestFileReader {
  public static void main(String[] args) {
    FileReader fr = null;
    int c = 0;
    try {
      fr = new FileReader("F:\\share\\workspace\\J2SE\\src\\io\\TestFileReader.java");
      int ln = 0;
      while ((c = fr.read()) != -1) {
        //char ch = (char) fr.read();
        System.out.print((char)c);
        //if (++ln >= 100) { System.out.println(); ln = 0;}
      }
      fr.close();
    } catch (FileNotFoundException e) {
      System.out.println("找不到指定文件");
    } catch (IOException e) {
      System.out.println("文件读取错误");
    }

  }
}

Writer:

例子程序“

package io;

import java.io.*;
public class TestFileWriter {
  public static void main(String[] args) {
    FileWriter fw = null;
    try {
      fw = new FileWriter("f:\\share\\j2se\\IO\\unicode.dat");
      //char在计算机是用数字表示的,直接把数字写进文件。char是2个字节,最大是65535
      //这里就是吧Unicode大多数国家的字符都写进了文件
      for(int c=0;c<=50000;c++){
        fw.write(c);
        if(c%100==0){
            fw.write("\n");
        }
      }
      fw.close();
    } catch (IOException e1) {
        e1.printStackTrace();
      System.out.println("文件写入错误");
      System.exit(-1);
    }
  }
}

结果:


!"#$%&‘()*+,-./0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~
???????????????????????????????? 
¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿāā????????
????????ēē??????ěě??????????????īī????????????????????????ń???ň???ōō????Œœ????????????Šš????????ūū????????
????Ÿ?????????????????????????ƒ??????????????????????????????????????????????∥???????????ǎǎǐǐǒǒǔǔǖǖǘǘǚǚǜǜ???

????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????

 
时间: 2024-10-10 20:10:32

io流之inputstream、outputstream、reader、writer的相关文章

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/* * 1.理解 "流" ? * 动态性.连续性.方向性. * * 2.在java语言中,将数据的输入/输出称之为 IO流. IO流的分类: * 1) 从方向分: 输入流 , 输出流. (参照计算机的内存) * 将数据送到内存中去称之为输入流.反之,称之为输出流. * * 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据). * * 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上). * * 3.在Java语言中,所有流类均来自

系统学习 Java IO (十五)----字符读写 Reader/Writer 其他子类

目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取字符的行号.行号从 0 开始.每当 LineNumberReader 在包装的 Reader 返回的字符中遇到行终止符时,行号递增. 可以通过调用 getLineNumber() 方法获取当前行号,也可以通过调用 setLineNumber() 方法设置当前行号. 注意设置的行号不会改变实际的文件指

java的inputstream, outputstream, reader和writer的比较

java的文件读写有多种方式,在此通过代码做以下比较. 比较一:FileWriter和FileReader public class MyCode1 { public static void main(String[] args) throws IOException { File f = new File("my.txt"); FileWriter fw = new FileWriter(f); fw.write("HELLO"); fw.close(); Fil

(五)IO流之ByteArrayInput/OutputStream

ByteArrayInputStream:是把字节数组当成源的输入流 String string="hello shanghai"; ByteArrayInputStream bis=new ByteArrayInputStream(string.getBytes()); int data=-1; while ((data=bis.read())!=-1) { System.out.print((char)data); } //bis.close(); ByteArrayInputSt

java io 流分类表

Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字符输入流 字符输出流   抽象基类 InputStream OutputStream Reader Writer 节点流 访问文件 FileInputStream FileOutStream FileReader FileWriter 访问数值 ByteArrayInputStream ByteAr

java高级特性之IO流

缓冲流 转换流 对象流 打印流 标准输入输出流 随机访问流 数组流 有关flush():所有的处理流的输出流,最外层流需要刷新. javaIO流 1认识File类 File类的对象表示一个文件或者一个文件目录 绝对路径:包含盘符的文件完整路径 相对路径:在当前路径下的文件路径 File类中的方法,涉及到文件或文件目录的新建.删除.获取文件的路径.获取文件的大小.并没有涉及到向文件中写入或读出内容.这样的读取或写入的功能就需要IO流来完成 一般通过将File类的对象作为参数传递到流的构造器中,作为

Java之IO流总结

IO流·Java流式输入/输出原理·Java流类的分类·输入/输出流类·常见的节点流和处理流·文件流·缓冲流·转换流·数据流·Print流·Object流 ①Java流式输入/输出原理            00101...-->    文件 ------------------ 程序 <-- ...00101    文件 ------------------ 程序               00101...-->    网络连接 ------------------ 程序 00101

学习笔记-java IO流总结 转载

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

Java IO流体系中常用的流分类

Java输入/输出流体系中常用的流分类 (表内容来自http://www.cnblogs.com/moonpool/p/5488463.html) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字符输入流 字符输出流   抽象基类 InputStream OutputStream Reader Writer 节点流 访问文件 FileInputStream FileOutStream FileReader File