黑马程序员技术交流社区

标题: API基础学习(三)(IO流) [打印本页]

作者: zjj5669436182    时间: 2017-11-26 21:36
标题: API基础学习(三)(IO流)
API基础学习()(IO)
作者:一衡
一、IO流的概述和分类
1、IO流的作用,可以吧数据存储到文本文件上,也可以从文本文件中读取数据。其中        的输入和输出是相对于Java程序。有力于数据的持久化存储。
                常见应用为:文件复制、上传文件、下载文件。
2、API可以查出,IO属于java.IO包,所以在使用时需要导包。
3、IO分类有:输出流与输入流;(FileWriter/FileReader)。
4、构造方法:
1)输出流:FileWriter(String fileName)  根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
例如:public class FileWriterDemo {
          public static void main(String[] args) throws IOException {
                //创建输出流对象
                FileWriter fw = new FileWriter("d:\\a.txt");
注:如果没有路径直接跟文本文档时,会自动生成到项目文件内。如果后面不加true是,在调用FileWriter方法时,系统先找目标路径或者相对路径中如果找不到时,会新建,如果路径中有,将会清空文本中的信息。
2)、输入流:FileReader(String fileName) :在给定从中读取数据的文件名的情况下创建一个新的文件,其中读取文件必须是有效的。
例如:public class FileReaderDemo {
          public static void main(String[] args) throws IOException {
                //创建输入流对象
                FileReader fr = new FileReader("fr.txt");
5、文本的写入。
例如:
public class FileWriterDemo3 {
        public static void main(String[] args) throws IOException {
                //创建输出流对象
                FileWriter fw = new FileWriter("b.txt");
               
                //void write(String str):写一个字符串数据
                //fw.write("abcde");
               
                //void write(String str,int index,int len):写一个字符串中的一部分数据
                //fw.write("abcde",0,5);
                //fw.write("abcde",1,3);
                fw.close();释放资源
                //void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97,其中数字97只会输出‘a’。
6、文本的读取。
例如:
public class FileReaderDemo {
        public static void main(String[] args) throws IOException {
                //创建输入流对象
                FileReader fr = new FileReader("fr.txt");
//一次读取一个数组
char[] chs = new char[1024];
int len//实际读取长度
while((len=fr.read(chs)!= -1{
System.out.printnew String(chs,0,len)
}
fr.close();
7、文本的copy
例如:public class CopyFileDemo2 {
        public static void main(String[] args) throws IOException {
                //创建输入流对象
                FileReader fr  = new FileReader("FileWriterDemo.java");
                //创建输出流对象
                FileWriter fw = new FileWriter("Copy.java");
               
                //读写数据
                char[] chs = new char[1024];
                int len;
                while((len=fr.read(chs))!=-1) {
                        fw.write(chs, 0, len);
                }
               
                //释放资源
                fw.close();
                fr.close();
        }
}
二、缓冲流使用;
1、读写
例如:
                BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt"));
                for(int x=0; x<10; x++) {
                        bw.write("hello"+x);
                        bw.newLine();
                        bw.flush();
                }
                bw.close();
                */
               
                BufferedReader br = new BufferedReader(new FileReader("br.txt"));
                String line;
                //1:br.readLine()
                //2:line=br.readLine()
                //3:line != null
                while((line=br.readLine())!=null) {
                        System.out.println(line);
                }
               
                br.close();
        }
}
2、缓冲流特殊使用
* 缓冲流的特殊功能:
* BufferedWriter
*                 void newLine():写一个换行符,这个换行符由系统决定
* BufferedReader
*                 String readLine():一次读取一行数据,但是不读取换行符
*/
public class BufferedStreamDemo {
        public static void main(String[] args) throws IOException {
                /*
                BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt"));
                for(int x=0; x<10; x++) {
                        bw.write("hello"+x);
                        //bw.write("\r\n");
                        bw.newLine();
                        bw.flush();
                }
                bw.close();
                */
               
                BufferedReader br = new BufferedReader(new FileReader("br.txt"));
                String line;
                //1:br.readLine()
                //2:line=br.readLine()
                //3:line != null
                while((line=br.readLine())!=null) {
                        System.out.println(line);
                }
               
                br.close();
        }
}
缓冲流的复制
public class CopyFileDemo {
        public static void main(String[] args) throws IOException {
                //创建输入缓冲流对象
        BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
                //创建输出缓冲流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
               
                //读写数据
                String line;
                while((line=br.readLine())!=null) {
                        bw.write(line);
                        bw.newLine();
                        bw.flush();
                }
                //释放资源
                bw.close();
                br.close();
        }

作者: 陈文老师    时间: 2017-11-27 13:40
好好复习,迎接考试
作者: 渝小妹    时间: 2017-11-27 16:12
好好复习   迎接考试    下一个挑战即将开始
作者: 1414225997    时间: 2017-11-28 16:04
超赞,虽然我看不懂
作者: orson...    时间: 2017-11-30 11:00
这几天你空闲时间充分利用起来,好好复习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2