*
 * 想要知道开发时用到哪些数据对象,只要通过四个明确即可:
 * 1.明确源,和目的:
 * 源: InputStream reader
 * 目的: OutPutStream Writer
 * 2.明确数据是否为纯文本数据:
 * 源:是纯文本: Reader
 * 否: InputStream
 *       目的: 是纯文本;: writer
 *                 否: OutPutSream
 * 3.明确具体的设备。
 *     源设备:
 *         硬盘:File
 *         键盘:System.in
 *         内存:数组。。
 *         网络:Socket流
 *     目的设备:
 *         硬盘:File
 *            控制台:System.out
 * 内存:数组。。
 *            网络:Socket流
 * 4.是否需要其他额外功能:。。
 *     1.是否需要高效(缓冲区)
 *         是: 就加入Buffer




//读取文件

public static void reader() throws FileNotFoundException, IOException

{

/*

* 读取字符数据的流对象

*

* 在创建读取流对象时,必须要明确被读取的文件,一定要确定 该文件是存在的。

*

* 用以个读取流关联一个已存在的文件。

*/

FileReader fr = new FileReader("");

char[] chs = new char[1024];

int len = 0;

while((len=fr.read(chs)) != -1)

{

System.out.println(new String(chs, 0, len));

}

}

//写入文件 的流

public static void writer() throws IOException

{

//创建一个可以往文件中写入字符数据的字符流对象。

/*

* 既然是往一个文件中写入数据,那么在创建对象时,就必须要明确该文件(用于存储数据的目的地)

*

* 如果文件不存在,则会自动创建,

* 如果文件存在,则会被覆盖。

*

* 如果构造函数中加入true   (可以实现对文件进行续写)

*/

FileWriter fw = new FileWriter("test.txt", true);

/*

* 调用Writer对象中write(String)方法,写入数据。

*

* 其实数据写入到了临时存储缓冲区中 。(就是写到流里边去了)

*/

fw.write("yangchao");

/*

* 进行刷新,  将数据直接写入到目的地中。

*/

fw.flush();

/*

* 关闭流,关闭资源。在关闭之前   先会调用flush进行刷新。

*/

fw.close();

}

=================================================================================

/*

* 练习:

* 需求:   将 c盘的一个文件  复制到d盘

*

* 思路:


1.需要读取文件。


2,将独到的源文件写入到目的地


3.使用字符流

*/

public class TestIO2

{

public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

//1.读取一个已有的文本文件,使用字符流读取。

FileReader fr = new FileReader("");

//2.创建一个目的,用于存储读到的数据。

FileWriter fw = new FileWriter("");

//3.频繁的 读 写  操作

int ch = 0;

while((ch=fr.read()) != -1)

{

fw.write(ch);

}

//4.关闭资源。

fw.close();

fr.close();

}

}

//使用缓冲区写入

public static void bufferedWriter() throws IOException

{

FileWriter fw = new FileWriter("");

//为了提高效率。使用了字符流的缓冲区。

//创建一个字符写入流的缓冲区对象。  并和指定要背缓冲的流对象相关联

BufferedWriter buf = new BufferedWriter(fw);

//使用缓冲区的写入方法将数据先写到目的地中。

buf.write("sldkfjlsd");

//使用缓冲区刷新的方法将数据刷新到目的地中

buf.flush();

//关闭缓冲区

buf.close();

}


//使用缓冲区读取

public static void bufferedReader() throws FileNotFoundException,

IOException

{

//使用BufferReader读取数据

FileReader fr = new FileReader("");

BufferedReader buf = new BufferedReader(fr);

String line = null;

while((line=buf.readLine()) != null)

{

System.out.println(line);

}

}


========================================================================
读写文件。。。。

public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

FileReader fr = new FileReader("");

BufferedReader bufr = new BufferedReader(fr);

FileWriter fw = new FileWriter("");

BufferedWriter bufw = new BufferedWriter(fw);

String line = null;

while((line=bufr.readLine()) != null)

{

bufw.write(line);

}

/*int ch = 0;

while((ch=bufr.read()) != 1)

{

bufw.write(ch);

}*/

bufw.close();

bufr.close();

}


//使用字节流读取文件

public static void byteStreamInput() throws FileNotFoundException,

IOException

{

//1.创建一个读取文件对象,和指定文件关联

FileInputStream fis = new FileInputStream("");

//2.一次读一个字节

int ch = 0;

while((ch=fis.read()) != -1)

{

System.out.println((char)ch);

}

//3.关闭资源。

fis.close();

}

//使用字节流写数据

public static void byteStreamWriter() throws FileNotFoundException,

IOException

{

//1,创建字节流输出对象,用于操作文件。

FileOutputStream fos = new FileOutputStream("");

//2.写数据,直接写入到目的地中

fos.write("lsdkfsd".getBytes());

//3.关闭资源

fos.close();

}

InputStream is = new FileInputStream("config.properties");

byte[] buf = new byte[1024];

int len = 0;

while(-1 != (len=is.read(buf)))

{

String str = new String(buf, 0, len);

System.out.println(str);

}

is.close();

=============================================================

//复制一个文件   到目的地

public static void copy() throws FileNotFoundException, IOException

{

FileInputStream fis = new FileInputStream("");

FileOutputStream fos = new FileOutputStream("");

byte[] buf = new byte[1024];

int len=0;

while((len=fis.read(buf)) != -1)

{

fos.write(buf, 0, len);

}

fos.close();

fis.close();

}

------------------------------------------------------------------------------------------------------------------

/*

* 读取一个键盘录入数据,  并打印在控制台上。

*

* 键盘本身就是一个标准的输入设备。

* 对于java而言,对于这种输入设备都有对应的对象。

*/

public class TestIO6

{

public static void main(String[] args) throws IOException

{

//
readKy();

transStream();

}

//第二种方式

//使用字节流向字符流的转换模式   将输入的字符装换成对应的  大写字母

public static void transStream() throws IOException

{

InputStream in = System.in;

//将字节流转换成字符流的桥梁

InputStreamReader isr = new InputStreamReader(in);

//字符流

BufferedReader bufr = new BufferedReader(isr);

String line = null;

while((line=bufr.readLine()) != null)

{

if("over".equals(line))break;

System.out.println(line.toUpperCase());

}

}

//第一种方式

public static void readKy() throws IOException

{

InputStream in = System.in;

int ch = in.read();

System.out.println(ch);

}

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

Java——IO(输入输出流)的更多相关文章

  1. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  2. Java IO 输入输出流 详解 (一)***

    首先看个图: 这是Javaio 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如console类,SteamTokenzier,Externalizable接口,Seri ...

  3. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  4. java io 输入输出流

    数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...

  5. Java - io输入输出流 --转换流

    转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

  6. Java IO输入输出流 字符数组流 ByteArrayOutputStream/ByteArrayInputStream

    private static void StringWriterAndReader() throws Exception { //字符串流(字符串的内存流) //字符串输入流 StringWriter ...

  7. Java IO输入输出流File 字节流

    public static void main(String[] args) throws IOException { //创建源 File f =new File("file/stream ...

  8. java IO输入输出流实现文本复制

  9. Java IO输入输出流 FileWriter 字符流

    字节缓冲流 //为什么要使用包装流,使用包装流是为了提高读写操作的性能. public class Packing_flowDemo { public static void main(String[ ...

随机推荐

  1. 【转】clang warning 警告清单(备查,建议直接command + F 速查 )

    Warning Message -WCFString-literal input conversion stopped due to an input byte that does not belon ...

  2. mybatis ForEach Collection集合等规范解析(转)

    转自:http://blog.csdn.net/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了fo ...

  3. 苹果 Mac OS X Yosemite 10.10 新功能特性总结 - 扁平化、主打跨设备的无缝连通性

    苹果在2014.06.03凌晨的 WWDC 2014 大会上正式发布了最新的 OS X Yosemite 桌面操作系统和 iOS 8 移动系统.虽然整场发布会的重心都在软件上,并没有硬件亮相,但软件上 ...

  4. ODI中显示us7ascii字符集的测试

    安装oracle DB时,选择的字符集:美国.英语.US7ASCII. 在不设置nls_lang的情况,插入中文,成功,但存进去的是乱码,select看到也是??(无论后面再怎么设置nls_lang) ...

  5. 在MongoDB中实现聚合函数 (转)

    随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...

  6. PAT 07-0 写出这个数

    用拼音输出一个数字的各位数字之和,这个或许比上面的标题恰当.这里我第一次用到了sprintf()(stdio.h)这个函数,我本来是要找itoa()(stdlib.h)函数来着,查资料一看,说这个函数 ...

  7. C#语法问答式总结

    传入某个属性的set方法的隐含参数的名称是什么?value,它的类型和属性所声名的类型相同. 如何在C#中实现继承?在类名后加上一个冒号,再加上基类的名称. C#支持多重继承么?不支持.可以用接口来实 ...

  8. 利用pl/sql developer进行远程连接oracle server出现的问题及解决办法

    由于本人刚刚给自己的笔记本做了系统,由原来的32位系统编程现在的64位系统,所以,很多软件由于兼容性,不得不重新安装...当我安完了pl/sql developer工具后,就满心欢喜的去连接远程ora ...

  9. Ubuntu安装软件提示”需要安装不能信任的软件包”解决办法

    用 Ubuntu 安装输入法软件包时提示"需要安装不能信任的软件包","这个动作需要从没有授权的软件源来安装软件包",赋予权限执行仍然无法安装,上网查了一下,只 ...

  10. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...