2.9 笔记

6.10 精度处理类【java.math】

BigDecimal数学计算中精度问题处理。

1.将存在精度问题的数使用类包装
new BigDecimal("" + val) //以串的形式传入

2.运算
add() //+
subtract() //-
multiply() //*
divide() // /

练习:

import java.math.BigDecimal;

public class testde {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.32;
        System.out.println(d1-d2);
        
        
        BigDecimal b1 = new BigDecimal(d1 +"");
        BigDecimal b2 = new BigDecimal(d2 +"");
        System.out.println(b1.subtract(b2));
        
        System.out.println(0.34*10);
        System.out.println(new BigDecimal("0.34").multiply(new BigDecimal("10")));
        
        //System.out.println(4.0 - 3.6);    
        //System.out.println(0.38 * 10);
    }

}

6.11 文件类【java.io】

io:input output 输入输出,和文件息息相关。
文件:用于做数据存储的介质,如ppt,word,txt文件,硬盘,压缩文件,磁盘,光盘.....
操作文件的:java.io.File 【用于操作文件和目录的:仅限于文件外部特性,属性信息】

File类:

构造方法:

new File(String path);
//示例
new File("D:\\1.txt") ; //操作文件

new File("D:\\a") ; //操作目录

new File("D:\\apache-tomcat-8.5.24-windows-x64.zip");

方法:

方法名

含义

参数

返回值

exists()

判断文件和目录【文件,目录】

boolean

getName()

获取文件目录名字

length()

文件长度【字节为单位】

getPath()

获取文件目录路径

canRead()

是否可读

canWrite()

是否可写

lastModified()

最后修改时间,时间差 毫秒

long

isFile()

是否是文件

boolean

createNewFile()

新建文件

mkdir()

新建目录,父目录存在

mkdirs()

新建目录,父目录可以不存在,连带

list()

列举目录内容

String[]

listFiles()

列举目录内容【一层】

File[]

listFiles(FileFilter filter)

列举时过滤信息

delete()

删除文件和空目录 【文件,目录】

文件例子:

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class testfile {
    public static void main(String[] args) {
        File f = new File("E:\\1.txt");
        
        if(f.exists()) {
            //获得信息
            //文件名
            System.out.println(f.getName());
            //文件长度
            System.out.println(f.length());
            //文件路径
            System.out.println(f.getPath());
            //是否可读可写
            System.out.println(f.canRead());
            System.out.println(f.canWrite());
            
            //最后修改时间
            Date d = new Date(f.lastModified());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(d));
            
        }else {
            //创建
            try {
                f.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

目录例子:

import java.io.File;

public class testindex {
    public static void main(String[] args) {
        File f = new File("E:\\Test\\1");
        
        if(!f.exists()) {
            f.mkdirs();
        }else {
            String [] names = f.list();
            
            //遍历全部
    //        for(String n : names) {
    //            System.out.println(n);
    //        }
            
            File []files = f.listFiles( );
            for(File file : files) {
                if(file.isDirectory()) {
                    System.out.println("目录:" + file.getName());
                }else {
                    System.out.println("文件:" +  file.getName() + "," + file.length());
                }
            }
        }    
        
    }

}

列举筛选:

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class f02 {
    public static void main(String[] args) throws IOException {
        File f = new File("E:\\Test\\1");
        
/*        File [] files = f.listFiles(new FileFilter() {
            
            @Override
            public boolean accept(File pathname) {
                // TODO Auto-generated method stub
                return f.getName().endsWith(".ini");
            }
        });
*/        
        File[] files = f.listFiles(a->a.getName().endsWith(".ini"));
        
        File [] file1 = f.listFiles(a->a.getName().length()==5);
        
        FileInputStream fis = new FileInputStream(new File("E:\\Test\\1\\1.txt"));
        int a = fis.read();  //每次读1字节,读不到返回-1
        while(a!=-1) {  
            System.out.println((char)a);
            a=fis.read();
        }
        fis.close();//关闭流
        
        for (File file : file1) {
            System.out.println(file);
        }
    }

}

6.12 文件读写类【java.io】

文件的读写操作。
流:Stream。 一连串的数据传输信号,数据传输的通道,能够实现文件读写桥梁。
6.12.1 流的分类
1. 流的方向划分: 【参照物: 程序员】

       输入流 : 读文件    
       输出流 : 写文件
   
2. 文件类型划分: 

    文件分为字节型文件 : 二进制文件,按字节存储,.doc .mp4 .jpg 
    文件分为字符型文件 :  文本文件,按照字符存储,.txt  .ini .java 
    
    字节流
    字符流
    
    
3. 文件传输量
    
    节点流  : 接触文件,读写数据量小
    缓冲流  : 借助节点流,加大数据量
    
InputStream  字节输入流
        FileInputStream 文件字节输入流
OutputStream 
        FileOutputStream 文件字节输出流
Reader        字符输入流
        FileReader
Writer        字符输出流
        FileWriter
        
BufferedReader 缓冲输入流
BufferedReader 缓冲输出流
6.12.2 FileInputStream
字节输入流,专用于读字节型文件。

构造方法:

new FileInputStream(File file) ;

方法:

read();  // int 每次读取1字节 ,读不到返回-1
read(byte[] b);
close(); //流关闭

例子:

public class TestInputStream {
    public static void main(String[] args) throws IOException {
        
        FileInputStream fis = new FileInputStream(new File("D:\\2.txt"));
        
        int a = fis.read();
        while(a != -1) {
            System.out.println((char)a);
            a = fis.read();
        }
        fis.close();
    }
}
6.12.3 FileOutputStream
字节输出流,专用于写入字节型文件

构造方法:【写入文件时,自动新建文件】

new FileOutputStream(File file) ; //覆盖写入
new FileOutputStream(File file,true) ; //追加写入

方法:

write(int i);  // int 每次读取1字节 ,读不到返回-1
write(byte[] b);
close(); //流关闭

练习: 将2.txt 复制到3.txt 【文本复制】

public class TestCopy {
    public static void main(String[] args) throws IOException {
        FileInputStream  f1 = new FileInputStream("D:\\apache-tomcat-8.5.24-windows-x64.zip");
        FileOutputStream f2 = new FileOutputStream("D:\\copy.zip");
        
        
        int a = f1.read();
        while(a != -1) {
            f2.write(a);
            a = f1.read();
        }
        f1.close();
        f2.close();
    }
}

读写操作数:

public class TestCopy2 {
    public static void main(String[] args) throws IOException {
        FileInputStream  f1 = new FileInputStream("D:\\apache-tomcat-8.5.24-windows-x64.zip");
        FileOutputStream f2 = new FileOutputStream("D:\\copy3.zip");
        
        byte[] b = new byte[1024];
        int a = f1.read(b);
        while(a != -1) {
            f2.write(b);
            a = f1.read(b);
        }
        f1.close();
        f2.close();
    }
}
6.12.4 FileReader
读取字符型文件,用法同FileInputStream。
public class TestReader {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("D:\\2.txt");
        int a  = fr.read();
        while(a != -1) {
            System.out.println((char)a);
            a  = fr.read();
        }
        fr.close();
    }
}
6.12.5 FileWriter

例子:

public class TestWriter {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("D:\\5.txt");
        fw.write("welcome");
        fw.write("\r\n");
        fw.write("Miss Yu");
        fw.write("\r\n");
        fw.write("我爱我的祖国");
        fw.close();
    }
}
6.12.6 BufferedReader
字符输入流中读取文本,缓冲各个字符,字符流看成节点流,BufferedReader是缓冲流【处理流,过滤流】,加大缓冲,提高读文件的效率,不会直接接触文件,通过字符流操作。
public class BufferedReader extends Reader{}

构造方法:

BufferedReader(Reader in) ;

方法:

readLine() ; 每次读取一行 String ,没有返回null
close(); 关闭相干的所有资源
public class TestBufferedReader {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("D:\\2.txt");
        BufferedReader br = new BufferedReader(fr);
        
        String s = br.readLine();
        while(s != null) {
            System.out.println(s);
            s = br.readLine();
        }
        br.close();
    }
}
6.12.7 BufferedWriter

同上

方法:

write(String s);
newLine() 换行
flush() 刷新,在关闭
close();
public class TestBufferedWriter {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("D:\\6.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        
        bw.write("我爱中国");
        bw.newLine();
        bw.write("我是中国人");
        
        bw.flush();
        bw.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值