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

java io流一

2016-05-11 10:22 465 查看
/*
对于IO输入输出流有两大类:
1,字节流(一般用的比较多)
2,字符流(指针对文字(包括中英文等各国语言文字)),字符流与字节流的区别之处就是字符流对象中融合了编码方式,即文字以哪种方式编码,以避免出现乱码。

常用的四个抽象基类:
字节流:InputStream、OutputStream
字符流:Reader、Writer
这四个基类的子类都是以这四个基类的名字作为后缀的,所以比较容易识别子类。

既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件

本例以操作文件为主来演示。

需求:在硬盘上,创建文件并写入文字数据。

*/

import java.io.*;
class FileWriterDemo
{
public static void main(String[] args) throws IOException
{

/*创建一个FileWriter对象,该对象一旦初始化就必须要明确被操作的文件。
而且该文件会被创建到指定目录下。如果该目录中已有同名文件,则原始文件将被覆盖。
其实该步就是明确数据要存放的目的地。
*/
FileWriter fw=new FileWriter("D:\\myfile\\111.txt");

/*
调用write方法将文字写到流中
*/
fw.write("Hello World\n");

/*
刷新流对象中的缓冲中的数据。
将数据刷到目的地。
*/
fw.flush();
fw.write("hdgbjshfjsdv,chvjsdhc");

/*
关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
将数据刷到目的地中。
close()和flush()的区别:close刷新后,会关闭流;而flush刷新后,流可以继续使用。
*/
fw.close();
}
}
import java.io.*;
class FileWriterDemo1
{
public static void main(String[] args)
{
writeFile();
readFile();
}

public static void writeFile()
{
FileWriter fw=null;
try
{
fw=new FileWriter("D:\\myfile\\MyCode\\1.txt",true);//true代表如果文件已经存在,那么在此文件后续写而不覆盖原来的文件。
fw.write("\r\ndemetria");
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null)//这个一定要判断是否为空,然后再关闭文件
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}

}
}

public static void readFile()
{
FileReader fr=null;
int ch=0;

try
{
fr=new FileReader("D:/myfile/MyCode/1.txt");
while((ch=fr.read())!=-1)
{
sop("ch="+(char)ch);
}

/*while(true)
{
ch=fr.read();
if(ch==-1)
break;
sop((char)ch);
}*/

}
catch (IOException e)
{
sop(e.toString());
}
finally
{
try
{
if(fr!=null)
fr.close();
}
catch (IOException e)
{
sop(e.toString());
}

}
}

public static void sop(Object obj)
{
System.out.println(obj);
}
}

/*
第二种方法通过字符数组来获取
将读取到的每个字符存在定义好的字符数组中。
*/

import java.io.*;

class FileWriterDemo2
{
public static void main(String[] args)
{
writefile();
readfile();

}

public static void writefile()
{
FileWriter fw=null;

try
{
fw=new FileWriter("D:/myfile/MyCode/2.txt",true);
fw.write("HelloWorld!");
}
catch (IOException e)
{
sop(e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch (IOException e)
{
sop(e.toString());
}
}
}

public static void readfile()
{
FileReader fr=null;
try
{
fr=new FileReader("D:\\myfile\\MyCode\\2.txt");
char[] ch=new char[1024];
int num=0;
while((num=fr.read(ch))!=-1)
{
sop(new String(ch,0,num));
}
}
catch (IOException e)
{
sop(e.toString());
}
finally
{
try
{
if(fr!=null)
fr.close();
}
catch (IOException e)
{
sop(e.toString());
}

}
}

public static void sop(Object obj)
{
System.out.println(obj);
}
}

/*
将C盘一个文本文件复制到D盘。

复制的原理:
其实就是将C盘下的文件数据存储到D盘的文件中。

步骤:
1,在D盘新建一个文件。用于存储C盘文件中的数据;
2,定义读取流和C盘文件关联;
3,通过不断地读写完成数据存储。
*/
import java.io.*;
class FileWriterDemo4
{
public static void main(String[] args) throws IOException
{
FileWriter fw=null;

FileReader fr=null;
try
{
fw=new FileWriter("D:/myfile/MyCode/newdemo.txt");//定义写字符流对象
fr=new FileReader("C:/test/old.txt");
int num=0;
char[] ch=new char[1024];
int count=0;
while((num=fr.read(ch))!=-1)
{
fw.write(new String(ch,0,num));
count++;
}

System.out.println("count:"+count);//count的值为1说明循环只走了一次。
}
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)
{
}

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