javaoop中的IO流

IO流:
1.IO(Input Output)是输入输出,要用派生类(子类),分为字节流,字符流,以及字节流向字符流的转换
2.IO主要包括三个部分:流式部分,非流式部分,文件读取部分的与安全相关的类以及与本地操作    系统相关的文件系统的类
3.字节流:二进制文件(jpg,png,mp3.mp4),大概就是图片与音频之类的。
   InputStream读取,OutputStream写入
   字符流:录入字符
Reader读取,Writer写入
我们不用这些类本身,用他们的子类效果会更好。
4.File类对象可以读取多个平台的文件和目录(文件夹)
5.缓冲区的作用:
        提高效率
        减少磁盘的IO操作,增加磁盘的寿命
6.先读取,读取时我们可以选择读取什么东西
   后写入,写入时我们要提供写入的地点(绝对路径,相对路径)

今天练习题目:

1.题目:从键盘输入文件的内容和要保存的文件名称,
之后根据输入的名称创建文件,并将内容保存的文件之中。

package java_1215;
 
import java.io.*;
import java.util.Scanner;
 
public class Demo01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入要保存的文件名:");
        String name=sc.nextLine();
        BufferedReader br=null;//先初始化一个读取类型的对象
        BufferedWriter bw=null;//初始化一个写入类型的对象
        System.out.println("请输入要保存文件的内容(输入 break 结束):");
        br=new BufferedReader(new InputStreamReader(System.in));//循环写入读取内容
        try {
            bw=new BufferedWriter(new FileWriter("c:\\"+name+".txt"));//将相对路径进行拼接
        } catch (IOException e) {
            e.printStackTrace();
        }
        String str="";//设置一个值重复接收缓冲区的内容
        try {
            while ((str=br.readLine())!=null){//读取后进行判断,在用户自主结束之前课一直循环
                if (str.equals("break")) break;//防止死循环
                     bw.write(str);//每次循环写入变量中的内容
                     bw.newLine();//换下一行与读取的内容保持一致
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();//使用后关闭流,并让其自动调用 flust方法
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
 
        }
 
    }
}

2.创建一个类Topic,运行后在控制台输入y可以创建一个A.txt文档到D盘 (输入其他字符无效,并重新输入),然后当你每次在控制台输入的字符串按下回车键后都会输出到A.txt文档中并且换行(如果输入end则结束输出否则继续执行输出),并有如下效果:

这道题前一道流程大体一致。不同的地方我加入了注释。

package java_1215;
 
import java.io.*;
import java.util.Scanner;
 
public class Topic {
    public static void main(String[] args) {
        BufferedReader br=null;
        BufferedWriter bw=null;
        File f=new File("c:\\A.txt");
        Scanner sc=new Scanner(System.in);
        String tf;
        do {
            //加入循环判断
            System.out.println("输入y创建文档");
            tf=sc.next();
        }while (!tf.equals("y"));
        try {
            //如果检测当前位置已有文件则直接退出程序,防止更改
        if (!f.createNewFile()){
            System.out.println("当前位置已存在同名文件,创建失败!");
            System.exit(0);
        }
        System.out.println("输入文本内容(输入 end 结束)");
         br=new BufferedReader(new InputStreamReader(System.in));
         bw=new BufferedWriter(new FileWriter(f));
         } catch (IOException e) {
            e.printStackTrace();
        }
        String str="";
        try {
            while ((str=br.readLine()) != null) {
                bw.write(str);
                bw.newLine();
                if ("end".equals(str)) break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
 
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值