文件操作输入流,输出流,BufferedWriter/Reader,FileWriter/Reader,read/ready,

public class Circle{

    public static void main(String[] args) {
        circle(5); // 输出半径为5的圆
    }

    public static void circle(int r) {
        for (int y = 0; y <= 2 * r; y += 2) {//0,2,4,6,8,10
            int x = (int) Math.round(r - Math.sqrt(2 * r * y - y * y));//5,1,0,0,1,5,  round是四舍五入
            int len = 2 * (r - x);//0,8,10,10,8,0
            // 圆左的空白
            for (int i = 0; i <= x; i++) {
                System.out.print(' ');
            }
            // 左半圆。
            System.out.print('*');
            // 中间空白
            for (int j = 0; j <= len; j++){
                System.out.print(' ');
            }
            // 右半圆
            System.out.println('*');
        }
    }
}
输出:
      * *
  *         *
 *           *
 *           *
  *         *
      * *

7Java 文件操作

7.1Java 实例 - 文件写入

Io,BufferedWriter

以下实例演示了使用 write() 方法向文件写入内容:
实例

import java.io.*;

/**
 * @author Wcl,alt+shift+j
 *
 */
public class Main {//7.1
   public static void main(String[] args)  {
       try {
           BufferedWriter out = new BufferedWriter(new FileWriter("runoob.txt"));
           out.write("菜鸟教程");
           out.close();
           System.out.println("文件创建成功!");
       } catch (IOException e) {
       }
   }
}
文件创建成功!

创建成功后当前目录下就会生成一个名为 runoob.txt 的文件并将 “菜鸟教程” 字符串写入该文件。

7.2Java 实例 - 读取文件内容

Io,BufferedReader

以下实例演示了使用 readLine() 方法来读取文件 test.log 内容,其中 test.log 文件内容为:
菜鸟教程
www.runoob.com
java 代码如下:
Main.java 文件

import java.io.*;

public class Main {
    public static void main(String[] args)  {
        try {
            BufferedReader in = new BufferedReader(new FileReader("runoob.txt"));//("test.log"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            System.out.println(str);
        } catch (IOException e) {
        }
    }
}

输出:

菜鸟教程
null
其他

ready()
以下代码是在学习读取文件与写入文件一起写的,读取文件时 String 换成 Stringbuffer 提高代码运行速度,ready() 方法判断文件是否准备好被读取,如果为 null,则停止。同时可以确保 Stringbuffer 不会报空指针异常。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileGet {//7.2
    public static void main(String[] args) {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("runoob.txt"));
            out.write("菜鸟教程");//0行
            out.append("dasd");
            out.newLine();
            out.write("你好");//1行
            out.flush();//刷新所有缓冲消息。
            out.close();
            System.out.println("文件创建成功!");
            BufferedReader in = new BufferedReader(new FileReader("runoob.txt"));
            StringBuffer sb;
            while (in.ready()){
            	// Method in class java.io. BufferedReader   ready()
            	//告诉这个流是否准备好被读取。
                sb = (new StringBuffer(in.readLine()));
                System.out.println(sb);
            }
            in.close();
        } catch (IOException e) {
        }
    }
}

输出:

文件创建成功!
菜鸟教程dasd
你好

在这里插入图片描述

7.3Java 实例 - 删除文件

delete()

以下实例演示了使用 delete() 方法将文件删除:
Main.java 文件

import java.io.*;

public class Main
{
    public static void main(String[] args)
    {
        try{
            File file = new File("c:\\test.txt");//创建File类的一个实例化对象,装箱(装机)
            if(file.delete()){//判断删除操作是否成功,使用机子的操作
                System.out.println(file.getName() + " 文件已被删除!");
            }else{
                System.out.println("文件删除失败!");
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

输出:

文件删除失败!

以上代码运行输出结果为(需要在 C 盘上先创建 test.txt 文件):

test.txt 文件已被删除!

7.4Java 实例 - 将文件内容复制到另一个文件

输入流,输出流,read,write,fileReader

以下实例演示了使用 BufferedWriter 类的 read 和 write 方法将文件内容复制到另一个文件:
Main.java 文件

import java.io.*;

public class Main {//7.4
    public static void main(String[] args) throws Exception {
        BufferedWriter out1 = new BufferedWriter(new FileWriter("srcfile"));//实例化
        out1.write("string to be copied\n");//类方法
        out1.close();//类方法
        InputStream in = new FileInputStream(new File("srcfile"));//输入流
        OutputStream out = new FileOutputStream
        (new File("destnfile"));//输出流
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {//Method in class java.io. FilterReader 读一个字符 ,//Method in class java.io. InputStream 
        	//从输入流读取数据的下一个字节。
            out.write(buf, 0, len);
            /**
             * public void write(char[] cbuf,
                  int off,
                  int len)
           throws IOException写入字符数组的一部分。 
通常,此方法将给定数组中的字符存储到此流的缓冲区中,根据需要将缓冲区刷新到底层流。 然而,如果请求的长度至少与缓冲区一样大,
那么这个方法将刷新缓冲区,并将字符直接写入底层流。 因此冗余BufferedWriter将不会不必要地复制数据。 左闭右开
             */
        }
        in.close();
        out.close();
        BufferedReader in1 = new BufferedReader(new FileReader("destnfile"));
        String str;
        while ((str = in1.readLine()) != null) {//从输入流读取下一行文本。 
            System.out.println(str);
        }
        in1.close();
    }
}

以上代码运行输出结果为:

string to be copied

7.5Java 实例 - 向文件中追加数据

filewriter 方法参数

以下实例演示了使用 filewriter 方法向文件中追加数据:
Main.java 文件

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("filename"));//每次写入都需要new BufferWriter并且需要new FileWriter
            out.write("aString1\n");
            out.close();
            out = new BufferedWriter(new FileWriter("filename",true));//每次写入都需要new BufferWriter并且需要new FileWriter
            out.write("aString2");
            out.close();
            BufferedReader in = new BufferedReader(new FileReader("filename"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            in.close();
        }
            catch (IOException e) {
            System.out.println("exception occoured"+ e);
        }
    }
}

以上代码运行输出结果为:

aString1
aString2

在这里插入图片描述

import java.io.*;

public class Main1 {
    /**
     * 文件追加数据
     * 原理就是将原文件数据先写进缓冲区,再在缓冲区追加数据最后保存
     * 也可以重新创建个备份文件记录原文件,再记录进缓冲区
     * 这里用第二种
     * 要用第一种,就只需要用一个字符串变量来记录备份,但是万一突然断电,缓冲区所有记录消失,还是更安全点好
     * @param args    C:\Users\xyt\Desktop
     * @throws Exception
     */
    static void file_add(String str) throws Exception {
        //首先创建一个备份文件,并读取原文件写入备份数据
        File c = new File("C:/Users/xyt/Desktop/c.txt");
        BufferedWriter c_w = new BufferedWriter(new FileWriter("C:/Users/xyt/Desktop/c.txt"));
        BufferedReader a_r = new BufferedReader(new FileReader("C:/Users/xyt/Desktop/a.txt"));//先手动创建一个a.txt,否则会报错
        String a_copy;
        while((a_copy=a_r.readLine())!=null) {
            c_w.write(a_copy);
            c_w.write("\n");
        }
        c_w.close();
        
        //再用备份文件先写入原文件缓冲区
        BufferedReader c_r = new BufferedReader(new FileReader("C:/Users/xyt/Desktop/c.txt"));
        String c_str;
        BufferedWriter a_w = new BufferedWriter(new FileWriter("C:/Users/xyt/Desktop/a.txt"));
        while((c_str=c_r.readLine())!=null) {
            a_w.write(c_str);
            a_w.write("\n");
        }
        
        //先不要写入,再把需要追加的参数数据写入缓冲区
        a_w .write(str);//写入缓冲区
        
        //然后写入
        a_w.close();//写入txt
        
        //最后删除备份文件(也可以保留),删除需要中止该文件的所有数据流,最好所有的都结束
        a_r.close();
        a_w.close();
        c_r.close();
        c_w.close();
        c.delete();
        
    }
    
    public static void main(String[] args) throws Exception{
        file_add("ababababababab");//运行几次便复制几次内容到a.txt里面,追加
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的点赞我的光

我的第一次被打赏在哪?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值