您的位置:首页 > 编程语言 > Java开发

Java——IO(输入输出流)

2014-07-07 09:44 489 查看



*

* 想要知道开发时用到哪些数据对象,只要通过四个明确即可:
* 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);





}


}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: