<span style="font-family:SimSun;font-size:14px;">
</span>
------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1IO知识
1IO的作用:1、IO流用来处理设备之间的数据传输。2、Java对数据的操作是通过流的方式。 3、Java用于操作流的对象都封装在IO包中。 4、流按操作数据分为两种:字节流与字符流。 5、流按流向分为:输入流,输出流。
2IO分类:
1字符流的抽象基类
Reader,Writer
2字节流的抽象基类
InputStrea,OutputStream
3既然IO流是用于操作数据的, 那么数据的最常见体现形式是:文件。 那么先以操作文件为主来演示。
2演示
1.创建一个文件,并写入一些数据;
<span style="font-family:SimSun;font-size:14px;">FileWriter ft=null;
try
{
ft=new FileWriter("demo.txt",true);//传递一个参数,但不覆盖已有的文件
ft.write("ffff");
}
catch (Exception e)
{
sop(e.toString());
}
finally
{
try
{
if (ft!=null)
{
ft.close();
}
}
catch (Exception e)
{
sop(e.toString());
}
}</span>
2-1从已有的文件中读取数据,利用读一个字符,并打印到控制台上
<span style="font-family:SimSun;font-size:14px;">import java.io.*;
class reader10
{
public static void main(String[] args) throws Exception
{
FileReader fr=new FileReader("demo.txt");
int ch=0;
while ((ch=fr.read())!=-1)
{
System.out.println((char) ch);
}
fr.close();
}
}</span>
2-2从已有的文件中读取数据,通过字符数组进行读取,并打印到控制台上
<span style="font-family:SimSun;font-size:14px;">import java.io.*;
class reader11
{
public static void main(String[] args) throws Exception
{
FileReader fr=new FileReader("demo.txt");
char[] arr=new char[3];
int num=3;
while ((num=fr.read(arr))!=-1)
{
System.out.println(num+new String(arr,0,num));
}
fr.close();
}
}</span>
3.读取一个文件.java,并打印到控制台上
<span style="font-family:SimSun;font-size:14px;">FileReader fw=null;
char[] arr=new char[1024];
int num=0;
try
{
fw=new FileReader("demo.txt");
while ((num=fw.read(arr))!=-1)
{
System.out.println(new String(arr,0,num));
}
}
catch (Exception e)
{
}
finally
{
try
{
if (fw!=null)
{
fw.close();
}
}
catch (Exception e)
{
}
}</span>
4将c盘的文件数据存储到d盘的一个文件中
<span style="font-family:SimSun;font-size:14px;">FileReader fr=null;
FileWriter fw=null;
char[] arr=new char[1024];
int ch=0;
try
{
fr=new FileReader("f:\\javasw.txt");
fw=new FileWriter("cxc.txt");
while ((ch=fr.read(arr))!=-1)
{
fw.write(new String(arr,0,ch),0,ch);
}
}
catch (Exception e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if (fr!=null)
{
fr.close();
}
}
catch (Exception e)
{
}
try
{
if (fw!=null)
{
fw.close();
}
}
catch (Exception e)
{
}
}</span>
<span style="font-family:SimSun;font-size:14px;">5字符流的缓冲区
1、缓冲区的出现提高了对数据的读写效率。
2、对应类。
(1)、BufferedWriter
(2)、BufferedReader
3、缓冲区要结合流才可以使用。
4、在流的基础上对流的功能进行了增强。
</span>
<span style="font-family:SimSun;font-size:14px;">BufferedWriter bufw=new BufferedWriter(new FileWriter("demo.txt"));
for (int x=0;x<5 ;x++ )
{
bufw.write("abcde");
bufw.newLine();
bufw.flush();
}
bufw.close();</span>
5.2举例:输入流缓冲区
<span style="font-family:SimSun;font-size:14px;">BufferedReader bufr=new BufferedReader (new FileReader("demo.txt"));
String ss=null;
while ((ss=bufr.readLine())!=null)
{
System.out.println(ss);
}
bufr.close();</span>
<span style="font-family:SimSun;font-size:14px;">6字符缓冲区的readLine(): 读取一个文本行。返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null ,所有要手动写入换行.</span>
<span style="font-family:SimSun;font-size:14px;">举例:模拟一个带行号的缓冲区</span>
<pre name="code" class="java"><span style="font-family:SimSun;font-size:14px;">import java.io.*;
class LineNumberReader1 extends BufferedReader
{
private int LineNumber;
LineNumberReader1(Reader r)
{
super(r);
}
public void set(int LineNumber)
{
this.LineNumber=LineNumber;
}
public int get()
{
return LineNumber;
}
public String readLine() throws IOException
{
LineNumber++;
return super.readLine();
}
}
class LineNumber
{
public static void main(String[] args) throws Exception
{
LineNumberReader1 lnr=new LineNumberReader1(new FileReader("f:\\javasw.txt"));
String line=null;
lnr.set(100);
while ((line=lnr.readLine())!=null)
{
System.out.println(lnr.get()+"...."+line);
}
lnr.close();
}
}</span>