Java的I/O

    Java的I/O是什么?Java的I/O可用来做什么?如何实现Java的I/O?本文围绕这些问题展开。

    I/O全称是Input/Output,Java的I/O就是Java的输入与输出操作。与之相关的接口和类都放在java.io包里面,因而,在进行Java输入输出操作时,需要导入该包。利用Java的I/O大大地扩展了系统的输入与输出范畴,不仅可以从控制台输入输出,还可以从其他数据存储形式进行输入输出,例如本地文件、远程数据库等。Java的I/O在文件数据的读写、数据的网络发送与接收等很多场合发挥着重要作用。

   Java的I/O如此有用,那么如何实现Java的I/O呢?实际上,Java的I/O操作时基于流的方式来实现的。它包括字节流和字符流。字节流,简而言之,就是数据的输入与输出采用字节的形式流入和流出;字符流,顾名思义,就是数据的输入与输出采用字符的形式流入和流出。

   Java的I/O常用字节输入流包括FileInputStream、BufferedInputStream和DateInputStream,与之对应的字节输出流包括FileOutputStream、BufferedOutputStream和DateOutputStream,前者是抽象类InputStream的子类,后者是抽象类OutputStream的子类。Java的I/O常用字符输入流包括FileReader和BufferedReader,与之对应的字符输出流包括FileWriter和BufferedWriter,前者是抽象类Reader的子类,后者是抽象类Writer的子类。而这些类都放在java.io包里。因而,在使用各种流进行操作的时候,可以查阅该包下各种流类的定义,根据具体的问题和业务需求,选择合适的构造器、属性和方法进行处理。

    现在让我们来求解一个具体问题。

   问题描述:请把从控制台输入的数据保存到一个文本文件里,实现数据持久化。

   解题分析:

  1)对于从控制台输入,需要设计一个输入流用来读取控制台所输入的内容,代码如下:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

  2)记录读取的内容,代码如下:

String content = br.readLine();

  3)检查用来存储内容的文件是否存在,若是不存在,创建文件,若是存在,则通知已有。代码如下:

File file = new File("C:\\content.txt");
if(file.exists() && file.isFile())
{
  System.out.println("用来保存记录内容的文件已存在");
}
else
{
  try
  {
    file.createNewFile();
  }
  catch(IOException e)
  {
    e.printStackTrace();
  }
}

  4)设计一个输出流,把所记录的内容保存到文本文件。代码如下:

try
{
  FileWriter fw = new FileWriter(file);
  BufferedWriter bw = new BufferedWriter(fw);
  bw.write(content);
  bw.close();
  fw.close();
}
catch(IOException e)
{
  e.printStackTrace();
}

或者

try
{
  PrintWriter pw = new PrintWriter(file);
  pw.write(content);
  pw.close();
}
catch(FileNotFoundException e)
{
  e.printStackTrace();
}

完整代码如下:

package com.jieke.io;

import java.io.*;
/**
 *<p>Title:SaveDataToFile</p>
 *<p>Description:把控制台输入的数据保存到一个文件里,实现数据持久化</p>
 *<p>Copyright:copyright(c) 2012</p>
 *<p>Filename:SaveDataToFile.java</p>
 *@author Wang Luqing
 *@version 1.0
 */

public class SaveDataToFile
{
 public static void main(String[] args)
 {
  String content = "";
  try
  {
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   content = br.readLine();
   br.close();
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }

  File file = new File("C:\\content.txt");
  if(file.exists() && file.isFile())
  {
   System.out.println("用来保存记录内容的文件已存在");
  }
  else
  {
   try
   {
     file.createNewFile();
   }
   catch(IOException e)
   {
     e.printStackTrace();
   }
  }

  try
  {
   FileWriter fw = new FileWriter(file);
   BufferedWriter bw = new BufferedWriter(fw);
   bw.write(content);
   bw.close();
   fw.close();
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }
}

总结:

  1)Java的I/O十分有用,深入了解和应用Java的IO包十分有必要。

  2)所谓的输入与输出都是相对于程序而言,换句话说,就是以程序为参照系。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值