`

IO(2)

    博客分类:
  • java
阅读更多

转换流:

转换流是字符流于字节流的桥梁,方便了字符流跟字节流之间的操作,字符流比字节流更高效。

InputStreamReader 字节流向字符流转换 需要和InputStream套接

OutputStreamWriter 字符流向字节流转换 需要和OutputStream套接
 例:实现功能将一个文件的内容显示在控制台上

import java.io.*;

public class Practice {
 public static void main(String[] args) {
  systemOutData("E:\\Workspace\\IO\\1.txt");
 }
 public static void systemOutData(String file){
  BufferedReader bfr = null;
  BufferedWriter bfw = null;
  try {
   bfr = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
   bfw = new BufferedWriter(new OutputStreamWriter(System.out));
   String line = null;
   while((line = bfr.readLine())!=null){
    bfw.write(line);
    bfw.newLine();
    bfw.flush();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   try {
    bfr.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
   try {
    bfw.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

标准输入输出流:

System.in
   标准输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。类型是InputStream。

System.out
   标准输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。类型是PrintStream是OutputStream的子类。
System.err
   标准错误输出流。此流已打开并准备接受输出数据。类型跟Out一样是PrintStream是OutputStream的子类。

System类还提供了几个能让你重定向标准输入,标准输出和标准错误的静态方法:
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
如果程序在短时间内输出了大量的信息,使得翻屏的速度非常快,以致于你都没法读了,这时对输出进行重定向就会显得非常有用了。对于那些要重复测试用户输入的命令行程序来说,对输入进行重定向也是非常重要的。

因为标准输入输出流操作的都是文本数据并且是字节流,我们可以将其转换为字符流操作,是程序更高效操作更方便。

例:

lBufferedReader bufr =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
操作流的基本规律:
1,明确源和目的(是为了明确使用输入流还是输出流)
2,明确操作的数据是否是纯文本数据。(是为了明确使用字符流还是字节流)
如果处理的是纯文本,并涉及到编码转换,要使用转换流。还要考虑是否需要使用缓冲流。
File类
File类用来讲文件或文件夹封装成对象,方便对文件和文件夹进行操作,是Java中唯一一个操作文件或文件夹的类。
常用方法示例:
import java.io.File;
import java.io.FilenameFilter;
public class TestFile {
 public static void main(String[] args) throws Exception{
  File file = new File("1.txt");
  file.canExecute(); //判断文件是否可以运行
  file.createNewFile(); //当且仅当不存在此文件时创建文件
  file.delete(); //删除文件 不走回收站
  file.deleteOnExit(); //在虚拟机退出时删除文件
  file.exists(); //判断此文件是否存在
  file.getAbsoluteFile(); //返回绝对路径名
  file.getAbsolutePath(); //返回此绝对路径名的字符串形式
  file.getName(); //返回由此抽象路径名表示的文件或目录的名称。
  file.getParent(); //返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
  file.getPath(); //将此抽象路径名转换为一个路径名字符串。
  file.isAbsolute(); //测试此抽象路径名是否为绝对路径名。
  file.isDirectory(); //测试此抽象路径名表示的文件是否是一个目录
  file.isFile();  //测试此抽象路径名表示的文件是否是一个标准文件。
  file.isHidden(); //测试此抽象路径名指定的文件是否是一个隐藏文件
  file.lastModified(); //此文件最后修改时间
  file.length(); //此文件长度
  file.list(); //返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
  file.list(new FilenameFilter(){
   public boolean accept(File dir, String name) {
    return false;
   }
  }); //返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
  file.mkdir();//创建此抽象路径名指定的目录。
  file.mkdirs();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
 }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuxiaolei7676/archive/2010/04/13/5482849.aspx

分享到:
评论

相关推荐

    DrawIo2Vuejs:使用draw.io创建Vuejs应用程序的更快方法

    $ npm i -g graph2app-drawio2vuejs 在开始之前 在开始之前,您可以阅读中级文章,以获取逐步指南: 或观看这个小演示: 快速开始 去创建一个新文件,并使用UML对象来创建组件树。 请注意,仅将标记为对象(第一个...

    IO2.ASM.asm

    IO2.ASM.asm

    51单片机开发,两个IO输入循环检测电平,串口输出IO口状态,两个IO口控制继电器,分别对应关系C代码详细介绍带注释.txt

    使用51单片机C语言编写的...sbit IO2 = P1^1; // 第二个IO口 sbit Relay1 = P1^2; // 继电器1控制IO口 sbit Relay2 = P1^3; // 继电器2控制IO口 unsigned char IO1_state = 0; // IO1的状态:0为关闭,1为打开 unsigne

    逻辑IO与物理IO 逻辑IO与物理IO 逻辑IO与物理IO

    在计算机系统中,IO(Input/Output)操作是与外部设备进行通信的关键环节。IO 端口是指CPU与外部设备交互的接口,用于发送和接收数据。在不同的硬件架构中,IO 端口的管理和访问方式有所不同,主要分为逻辑IO和物理...

    Paper io 2 Oyunu Oyna-crx插件

    纸io 2游戏是一个比第一游戏更快地播放的IO游戏。 纸IO 2游戏是IO游戏比第一个游戏更快。 使用更快的移动展开您自己的区域。 你必须拥有最多的土地。 要做到这一点,你需要慢慢地成长到对手的土地上,并希望从他身上...

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

    2. 阻塞IO与非阻塞IO: - **阻塞IO**:在阻塞模式下,当请求数据未准备好时,系统调用会暂停进程,直到数据可用。Java传统的`Socket`和`ServerSocket`类使用的就是阻塞IO。这种模型效率较低,因为CPU可能会浪费时间...

    PlatformIO 离线安装资源

    2. **安装VSCode扩展**:如果你打算使用Visual Studio Code作为IDE,你需要先安装PlatformIO的VSCode扩展。确保VSCode已经安装,然后离线安装扩展通常可以通过将`.vsix`文件拖放到VSCode的扩展视图来完成。 3. **...

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO.pdf

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non...

    IO端口和IO内存详解

    几乎每一种外设都是通过读写设备上的寄存器来进行...CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。

    很给力的IO按键扫描电路,老外的5个IO可以驱动25个按键

    首先,传统的按键扫描方法通常采用行扫描和列检测的方式,例如用3个IO口作为行扫描,2个IO口作为列检测,总共可以扫描6个按键(2*3=6)。然而,这种基本方法并没有充分利用IO口的潜力。通过一些创新设计,我们可以...

    intouch IOserver 全

    2. 连接建立:一旦驱动配置完成,Intouch会尝试建立与PLC的连接。这可能通过串行、以太网、现场总线(如Profibus、Modbus或Ethernet/IP)等方式进行。 3. 数据交换:连接成功后,Intouch可以通过IOserver与PLC进行...

    Linux文件IO跟标准IO总结

    2. **性能**:标准IO因为有缓冲,可能在大量数据传输时表现更好;而文件IO通常更快,尤其是小块数据的读写。 3. **灵活性**:文件IO提供了更多的控制,可以进行更精细的操作,如文件定位;标准IO则更加简洁,易于...

    最新单片机仿真 2io5键盘模拟音量数码管显示

    最新单片机仿真 2io5键盘模拟音量数码管显示最新单片机仿真 2io5键盘模拟音量数码管显示最新单片机仿真 2io5键盘模拟音量数码管显示最新单片机仿真 2io5键盘模拟音量数码管显示最新单片机仿真 2io5键盘模拟音量...

    RapidIO V3.0

    RapidIO是一种先进的高带宽、低延迟的互连技术,主要用于芯片至芯片、板至板之间的通信,尤其是在高性能计算、网络和嵌入式系统领域。RapidIO技术由RapidIO贸易协会(RapidIO Trade Association,简称RTA)维护和...

    rapidIO嵌入式系统互连_rapidio_rapidIO嵌入式系统互连_rapidio嵌入式_嵌入式_

    2. **RapidIO硬件设计**:讲解如何设计和实现RapidIO接口,包括物理层和数据链路层的实现。 3. **RapidIO软件支持**:阐述如何在操作系统层面支持RapidIO,包括驱动程序开发和系统级编程。 4. **RapidIO系统架构**:...

    gnu.io.SerialPort( rxtx-2.1.7.jar)

    gnu.io.I2C.class gnu.io.I2CPort.class gnu.io.I2CPortEvent.class gnu.io.I2CPortEventListener.class gnu.io.LPRPort.class gnu.io.NoSuchPortException.class gnu.io.ParallelPort.class gnu.io....

    stm单片机io管脚翻转实验

    2. 使用示波器来观察波形的变化。 3. 改变编译器、单片机类型和时钟频率等因素来观察IO口翻转速度和波形样式的变化。 实验结果: * AT89S52单片机:IO口翻转速度约为333.3kHz,占空比约为33.3%。 * STM32F103VE...

    platformio.platformio-ide-2.4.3

    platformio.platformio-ide-2.4.3

    系统IO跟标准IO的连续与区别

    2. 文件 IO 中用文件描述符表现一个打开的文件,可以访问不同类型的文件,如普通文件、设备文件和管道文件等。而标准 IO 中用 FILE(流)表示一个打开的文件,通常只用来访问普通文件。 三、文件 IO 和标准 IO 的...

Global site tag (gtag.js) - Google Analytics