过程:
输入流通过使用read()方法,读去“源”中的数据;
输出流通过使用write()方法,把数据写入“目的地”;
备注:输入输出是从程序的角度来说的,源——>程序;程序——>目的地。
File类:
程序从一个文件中读取数据(输入流)向另外一个文件写入数据(输出流)。其中文件分:普通文件和设备文件(键盘,显示屏等)。
想要从一个文件中读取数据,就必须先要得到这个文件的信息(大小,名字,路径等等)则File的对象就是用来获取文件的一些信息。
File类的构造函数File(Sting path)path是路径则表示File作用的对象为路径,要是文件名这对象为文件。(当然他还有其他构造函数这就直说一个。你可以查看JDK帮助文档)
File file=new File(“path”); //定义一个对象
数据的输入输出可以按字节流和字符流分。
创建输入流输出流一定要处理异常。
字节流 :
一。
读取时read()按字节读出(一个字节8为二进制)。
两个主类InputStream和OutputStream这两个是抽象类实现具体方法一般用分FileInputStream和FileOutputStream来创建文件输入流实现read()write()方法
File file=new File(“文件名”);
FileInputStream f1=new FileInputStream(file);//创建输入流
或
FileInputStream f2=new FileInputStream(“文件名”);
f2.read(“把读取的数据放入”);
FileOutputStream f3=new FileOutputStream("目的地文件名");//创建输出流
f3.write(“要写入的数据”);
二。
顺序输入流:可以将多个输入流顺序接在一起,在进行输入时,顺序输入流一次打开每个输入流并读取数据,读完后关闭,然后自动切换到下一个输入流。
SequenceInputStream(Enumeration e);//枚举对象
或
SequenceInputStream(InputStream s1,OutputStream s2);
三。
以上的都是顺序读取和写入的接下来介绍一下随机读取写入的。(FileInputStream和FileOutputStream是顺序读取写入不能随机),RandomAccessFile类他不是InputStream 和OutputStream的子类。但是RandomAccessFile类创造的流既可以作为输出流也可以作为输入流。
构造函数
RandomAccessFile(String name,String mode);参数name是源也可以使目的地,参数mode是r(只读)rw(读写)决定创建的流对文件的访问权利。
RandomAccessFile(File file,String mode);
RandomAccessFile类中有一个
seek(long a);方法,用来定位RandomAccessFile流的读写位置,其中参数a确定读写位置距离文件开头的字节个数。
getFilePointer()方法获取流的当前读写位置
read()从源中读出一个字节的数据
write(byte[] b)写b.length个字节到文件
readLine()从文件中读取一行。如果读取含非ASCII字符的文件是(如汉字)会出现乱码。解决方法
String str=in.readLine();
byte[] b=str.getBytes("iso-8859-1");
String content =new String (b,"GB2312");默认是GB2312可省略。
其余方法查看JDK帮助文档。
字符流:
输入流输出流按字符读取写入(16位)
Reader类和Writer类 子类为InputStream Reader和OutputStreamWriter两者是从字节流到字符流转换的桥梁。前者从输入字节流中读入字节数据按照指定或默认的字符集将其转换成字符后者激昂字符数据转换为字节数据写到输出流。但太麻烦一般用他们两的子类:
FileReader和FileWriter类。其用法和FileInputStream 和 FileOutputStream类似。
对与Writer流,writer方法将数据首先写入缓冲区,每当缓冲区溢出是,缓冲区的内容被自动写入到目的地
缓存流:
上面讲的输入流输出流都是按字节或字符来取数据的太不效率:现在应用缓冲技术,先将要处理的数据放入缓冲区满后在送出。
BufferedReader和BufferedWriter类创建的对象交缓冲输入,缓冲输出流。缓冲输入,缓冲输出流作用的对象是输出流和输入流。
输入流(源)——>BufferedReader,BufferedWriter——>输出流(目的地)。
例如: FileReader fi=new FileReader("student.txt");
BufferedReader b1=new BufferedReader(fi);
String str=b1.readLine(); //注意这里是用的是BufferedReader 的对象调用的readLine();
和
FileWriter f2=new FileWriter("hello.txt");
BufferedWriter b2=new BufferedWriter(Writer out);
newLine(); //BufferedWriter流有一个独特的文件写入一个回行府;
过滤:
数组流:
输入流通过使用read()方法,读去“源”中的数据;
输出流通过使用write()方法,把数据写入“目的地”;
备注:输入输出是从程序的角度来说的,源——>程序;程序——>目的地。
File类:
程序从一个文件中读取数据(输入流)向另外一个文件写入数据(输出流)。其中文件分:普通文件和设备文件(键盘,显示屏等)。
想要从一个文件中读取数据,就必须先要得到这个文件的信息(大小,名字,路径等等)则File的对象就是用来获取文件的一些信息。
File类的构造函数File(Sting path)path是路径则表示File作用的对象为路径,要是文件名这对象为文件。(当然他还有其他构造函数这就直说一个。你可以查看JDK帮助文档)
File file=new File(“path”); //定义一个对象
数据的输入输出可以按字节流和字符流分。
创建输入流输出流一定要处理异常。
字节流 :
一。
读取时read()按字节读出(一个字节8为二进制)。
两个主类InputStream和OutputStream这两个是抽象类实现具体方法一般用分FileInputStream和FileOutputStream来创建文件输入流实现read()write()方法
File file=new File(“文件名”);
FileInputStream f1=new FileInputStream(file);//创建输入流
或
FileInputStream f2=new FileInputStream(“文件名”);
f2.read(“把读取的数据放入”);
FileOutputStream f3=new FileOutputStream("目的地文件名");//创建输出流
f3.write(“要写入的数据”);
二。
顺序输入流:可以将多个输入流顺序接在一起,在进行输入时,顺序输入流一次打开每个输入流并读取数据,读完后关闭,然后自动切换到下一个输入流。
SequenceInputStream(Enumeration e);//枚举对象
或
SequenceInputStream(InputStream s1,OutputStream s2);
三。
以上的都是顺序读取和写入的接下来介绍一下随机读取写入的。(FileInputStream和FileOutputStream是顺序读取写入不能随机),RandomAccessFile类他不是InputStream 和OutputStream的子类。但是RandomAccessFile类创造的流既可以作为输出流也可以作为输入流。
构造函数
RandomAccessFile(String name,String mode);参数name是源也可以使目的地,参数mode是r(只读)rw(读写)决定创建的流对文件的访问权利。
RandomAccessFile(File file,String mode);
RandomAccessFile类中有一个
seek(long a);方法,用来定位RandomAccessFile流的读写位置,其中参数a确定读写位置距离文件开头的字节个数。
getFilePointer()方法获取流的当前读写位置
read()从源中读出一个字节的数据
write(byte[] b)写b.length个字节到文件
readLine()从文件中读取一行。如果读取含非ASCII字符的文件是(如汉字)会出现乱码。解决方法
String str=in.readLine();
byte[] b=str.getBytes("iso-8859-1");
String content =new String (b,"GB2312");默认是GB2312可省略。
其余方法查看JDK帮助文档。
字符流:
输入流输出流按字符读取写入(16位)
Reader类和Writer类 子类为InputStream Reader和OutputStreamWriter两者是从字节流到字符流转换的桥梁。前者从输入字节流中读入字节数据按照指定或默认的字符集将其转换成字符后者激昂字符数据转换为字节数据写到输出流。但太麻烦一般用他们两的子类:
FileReader和FileWriter类。其用法和FileInputStream 和 FileOutputStream类似。
对与Writer流,writer方法将数据首先写入缓冲区,每当缓冲区溢出是,缓冲区的内容被自动写入到目的地
缓存流:
上面讲的输入流输出流都是按字节或字符来取数据的太不效率:现在应用缓冲技术,先将要处理的数据放入缓冲区满后在送出。
BufferedReader和BufferedWriter类创建的对象交缓冲输入,缓冲输出流。缓冲输入,缓冲输出流作用的对象是输出流和输入流。
输入流(源)——>BufferedReader,BufferedWriter——>输出流(目的地)。
例如: FileReader fi=new FileReader("student.txt");
BufferedReader b1=new BufferedReader(fi);
String str=b1.readLine(); //注意这里是用的是BufferedReader 的对象调用的readLine();
和
FileWriter f2=new FileWriter("hello.txt");
BufferedWriter b2=new BufferedWriter(Writer out);
newLine(); //BufferedWriter流有一个独特的文件写入一个回行府;
过滤:
DataInputStream和DataOutputStream类(FilterInputStream 和 FilterOutputStream派生)创建的对象为数据输入流和数据输出流,他们容许程序按着及其无关的风格读取Java原始数据(各种类型)也就是读取时不必考虑多少个字节。(二进制的形式处理)
构造函数
DataInputStream(InputStream in);
例如:
FileInputStream f1=new FileInputStream(file);//创建输入流DataInputStream indata=new DataInputStream(fi)
indata.readInt();
FileOutputStream f3=new FileOutputStream("目的地文件名");//创建输出流
DataOutputStream outdata=new DataOutputStream(f3);
outdata.writeInt();
数组流:
流的源和目的地除了可以是文件外还可以是计算机的内存。
FileInputStream f1=new FileInputStream(System.in);//从建盘中输入
FileInputStream f2=new FileInputStream(System.out);//在屏幕中输出
好吧先写这些不全,以后会再补,只是个人总结,大家可以喷。