------- android培训java培训、期待与您交流!
----------

IO(Input Output)流



IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为两种:字节流与字符流。

流按流向分为:输入流,输出流。

 IO流常用基类

字节流的抽象基类:InputStream ,OutputStream。

字符流的抽象基类: Reader ,Writer。

注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

•  如:InputStream的子类FileInputStream。

•  如:Reader的子类FileReader。

IO程序的书写

导入IO包中的类

进行IO异常处理

在finally中对流进行关闭

字符流——创建文件



创建流对象,建立数据存放文件     FileWriter fw = new FileWriter(“Test.txt”);



调用流对象的写入方法,将数据写入流        fw.write(“text”);



关闭流资源,并将流中的数据清空到文件中      fw.close();

import java.io.FileWriter;
import java.io.IOException; public class IODemo
{
public static void main(String[] args)
{
FileWriter fw = null; try
{
fw = new FileWriter("Test.txt");
fw.write("test");
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
if (fw != null)
try
{
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}

字符流——读取文件

建立一个流对象,将已存在的一个文件加载进流。       FileReader fr = new FileReader(“Test.txt”);

创建一个临时存放数据的数组        char[] ch = new char[1024];

调用流对象的读取方法将流中的数据读入到数组中            fr.read(ch);

import java.io.FileReader;
import java.io.IOException; public class IODemo
{
public static void main(String[] args)
{
FileReader fr = null; try
{
fr = new FileReader("E:\\JAVA\\Demo\\Test.txt");
char[] buf = new char[1024];
int len = 0;
while ((len = fr.read(buf)) != -1)
{
System.out.println(new String(buf,0,len));
}
}
catch (IOException e)
{
System.out.println("read Exception:"+e.toString());
}
finally
{
if (fr != null)
{
try
{
fr.close();
}
catch (IOException e)
{
System.out.println("close Exception"+e.toString());
}
}
}
}
}

注意:

定义文件路径时,可以用“/”或者“\\”。

在创建一个文件时,如果目录下有同名文件将被覆盖。

在读取文件时,必须保证该文件已存在,否则出异常。

flush()和close()区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。

FileWriter(): 后缀是父类名,前面是该流对象的功能

import java.io.FileWriter;
import java.io.IOException; /**
*
* 需求:在硬盘上创建一个文件并写入一些数据
*
*/ public class IODemo
{
public static void main(String[] args) throws IOException
{
//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
//其实该步就是在明确数据要存放的目的地。
FileWriter fw = new FileWriter("FileWriter.txt"); //调用write方法,将字符串写入到流中。
fw.write("The code run!"); //刷新流对象中的缓冲中的数据。
//将数据刷到目的地中。
fw.flush(); //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
//将数据刷到目的地中。
//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
fw.close();
}
}

通过实验发现,FileWriter() 会覆盖已有数据,要通过传递参数true来续写。

import java.io.FileWriter;
import java.io.IOException; /**
*
* 需求:在硬盘上续写一些数据
*
*/ public class IODemo
{
public static void main(String[] args) throws IOException
{ FileWriter fw = new FileWriter("FileWriter.txt",true); fw.write("The code run!"); fw.close();
}
}

FileReader读取的第一种方式:

import java.io.FileReader;
import java.io.IOException; /**
*
* FileReader演示:
*
*/
public class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
//创建一个文件读取流对象,和指定名称的文件相关联。
//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReader fr = new FileReader("E:\\JAVA\\Demo\\FileWriter.txt"); int ch = 0; //调用读取流对象的read方法。
//read():一次读一个字符。而且会自动往下读。
while ((ch = fr.read()) != -1)
{
System.out.println((char)ch);
}
fr.close();
}
}

第二种:

import java.io.FileReader;
import java.io.IOException; /**
*
* FileReader演示:
*
*/
public class FileReaderDemo
{
public static void main(String[] args) throws IOException
{ FileReader fr = new FileReader("E:\\JAVA\\Demo\\FileWriter.txt"); char[] buf = new char[1024]; int len = 0; while ((len = fr.read(buf)) != -1)
{
System.out.println(new String(buf,0,len));
}
fr.close();
}
}
/*
需求:将C盘一个文本文件复制到D盘。 复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。 步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/
import java.io.*; class CopyText
{
public static void main(String[] args) throws IOException
{
copy();
} public static void copy()
{
FileWriter fw = null;
FileReader fr = null;
try
{
fw = new FileWriter("SystemDemo_copy.txt");
fr = new FileReader("SystemDemo.java"); char[] buf = new char[1024]; int len = 0;
while((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败"); }
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
}
if(fw!=null)
try
{
fw.close();
}
catch (IOException e)
{
}
}
}
}

------- android培训java培训、期待与您交流!
----------

黑马程序员——JAVA基础之IO流FileReader,FileWriter的更多相关文章

  1. 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流

    ------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区        缓冲区的出现提高了对数据的读写效率. 对应类 •  BufferedWriter ...

  2. 黑马程序员_Java基础:IO流总结

    ------- android培训.java培训.期待与您交流! ---------- IO流在是java中非常重要,也是应用非常频繁的一种技术.初学者要是能把IO技术的学透,java基础也就能更加牢 ...

  3. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  4. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  5. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  6. 黑马程序员——JAVA基础之网络编程

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 网络编程 网络模型:OSI参考模型和TCP/IP参考模型 网络通讯三要素: IP地址:InetA ...

  7. 黑马程序员 Java基础<十八>---> 网路编程

    --------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 第一  概述 一.概述: 1.网络模型:OSI参考模型和TCP ...

  8. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  9. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

随机推荐

  1. unix shell-01 file

    1 一个文件有三种访问方式: 1.读,可以显示该文件的内容 2.写,删除或者编辑这个文件 3.执行,如果该文件时一个shell脚本或程序 按照文件所针对的用户,用户可以分为三种: 1.文件属主,即该文 ...

  2. SharePoint开发 - Excel数据导入到SharePoint自定义列表(数据视图方式)

    博客地址 http://blog.csdn.net/foxdave 本篇讲解一个有些新颖的SharePoint实例应用,给甲方做过项目的都有过体会,数据太多了,客户有Excel,要求实现批量导入. 效 ...

  3. 红帽中出现”This system is not registered with RHN”的解决方案

    原因是你的linux没有在红帽网络上注册,所以无法下载上面的软件包,替代方案可以使用centos. 下面介绍下使用centos 的流程 1.卸载rhel的默认安装的yum包查看yum包rpm -qa| ...

  4. ZOJ 3747 - Attack on Titans (递推)

    题意:有三个兵种R,G,C,选取N个排成一列,要求G至少有M个连续的,R至多有K个连续的,问有多少种排列方式. 此题与UVa 10328 - Coin Toss非常相似,都是问某个字符连续出现的种数. ...

  5. 聚簇(Cluster)和聚簇表(Cluster Table)

    聚簇(Cluster)和聚簇表(Cluster Table) 时间:2010-03-13 23:12来源:OralanDBA.CN 作者:AlanSawyer 点击:157次 1.创建聚簇 icmad ...

  6. Java中的blank final

    Java allows the creation of blank finals, which are fields that are declared as final but are not gi ...

  7. 51 nod 机器人走方格

    从一个长方形的方格的右上角 走到 左下角 , 问一共有多少种不同的路线可以达到 . #include<stdio.h> #include<string.h> #include& ...

  8. Python OpenCV ——Matplotlib显示图片

    Color image loaded by OpenCV is in BGR mode.But Matplotlib displays in RGB mode.So color images will ...

  9. Codeforces Round #365 (Div. 2)-D Mishka and Interesting sum(树状数组)

    题目链接:http://codeforces.com/contest/703/problem/D 思路:看了神犇的代码写的... 偶数个相同的数异或结果为0,所以区间ans[l , r]=区间[l , ...

  10. matlab自带princomp(PCA降维方式)

    matlab 中自带的函数就不必怀疑. princomp:principal componet analysis (PCA). [COEFF,SCORE,latent,tsquare]=princom ...