上帝 发表于 2015-9-9 10:44:19

Java的I/O流(⊙﹏⊙)b

本帖最后由 xiaoye 于 2015-9-30 10:50 编辑

                                                                                     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();
}
}
设计一个输出流,把所记录的内容保存到文本文件。代码如下:
try
{
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
fw.close();
}
catch(IOException e)
{
e.printStackTrace();
}
最后附上我的完整代码
package com.jieke.io;

import java.io.*;
/**
*<p>Title:SaveDataToFile</p>
*<p>Description:把控制台输入的数据保存到一个文件里,实现数据持久化</p>
*<p>Filename:SaveDataToFile.java</p>
*/

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();
}
}
}

小路 发表于 2015-9-9 22:49:13

学习学习技术,加油!

若冰 发表于 2015-9-10 04:30:12

还是不错的哦,顶了

asion 发表于 2015-9-10 21:46:21

还是不错的哦,顶了

Jack-5 发表于 2015-9-10 23:58:48

还是不错的哦,顶了

Lucifer 发表于 2015-9-11 06:02:39

支持,看起来不错呢!

H.U.C-麦麦 发表于 2015-9-11 21:57:36

感谢楼主的分享~

Sty,涛 发表于 2015-9-12 07:23:09

支持中国红客联盟(ihonker.org)

wanmznh 发表于 2015-9-12 09:03:14

感谢楼主的分享~

xiaoqqf4 发表于 2015-9-12 11:03:56

学习学习技术,加油!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Java的I/O流(⊙﹏⊙)b