文件与流

1.File :既可以表示 目录 又可以表示文件

  • exists():用于判断目录或文件是否存在
  • mkdir():用于创建一个目录
  • mkairs():用于创建一组目录
  • createNewFile():用于创建一个文件
  • length();获取文本文件中的字节数;可以计算操作的百分比;
  • isFile():判断文件对象是否是文本文件;
  • isDirectory():判断文件对象是否是目录
  • delete():删除文件
  • String[] list();获取目录下所有文件的名称
  • File[]  listFile();获取目录下所有文件的对象
注意:File类型仅仅能操作文件的属性,不能操作文件的内容

2.通过输入输出流操作文本文件

a)分类

    i)流向:输入流

                    输出流

    ii)操作的单位  字节流:用于操作,压缩包,图片,音频视频

                            字符流;文本文件

    iii)功能

                节点流

                处理流(包装\转换)

单文件读


批量删除(格式化)


写数据



b)字节流:以字节为单位对文件进行操作
输入流
InputStream
FileInputStream
int read(byte[] b);每一从文件中读取多少个字节的数据,返回值,是读取的字节数
如果返回值 为 -1 表示没有读到数据
close(); 关闭输入流
输出流:
OutputStream
FileOutputStream
write(byte[] b); 把一个字节数组的内容写入到 文件中
close();如果不关闭,文件处于占用状态
flush();刷,缓冲区 的内容强制写到 文件中 ,可以减少内存的占用
当文件操作时,内存小于文件的大小时 每操作一定数据量时必须 强制 flush()
c)构建字节流对象的方法
输入流
FileInputStream(File f)
FileInputStream(String path)
输出流 
FileOutputStream(File f)
FileOutputStream(File f,boolean append):append 为 true 表示 在文件的末尾添加
append 为 false 表示 覆盖文件的内容
FileInputStream(String path)
FileInputStream(String path,boolean append)
d)处理的异常
输入流:如果文件不存在 之间发生异常
FileNotFoundException
IOException


输出流:如果文件不存在,会自动创建;如果目录不存在,发生异常
FileNotFoundException   目录不存在
IOException


3.字符流:以字符为单位,每一次都是操作字符
输入流:
Reader

输出流
Writer




4.接口:抽象方法和常量的一个组合,它表示一种能力或一种规范
 是java中单一继承的一个补充
a)分类:
i)标识接口,其中没有任何方法和属性
例如 java.io.Serializable
作用:就是为了实现多态
ii)功能性接口: 提供抽象方法的接口
1)单功能接口
2)多功能接口
iii)常量接口:只存放常量值,接口是存放常量的最佳场所

-----------------------------------------------------------------------
1.了解io流的分类
a.流向:
输入 
输出 
b.功能 
节点流
处理流
c.操作的对象
字节流
字符流
2.File :既可以指目录也可以指文件
3.文件复制:(文件上传)  java.nio.file.Files;
Files.copy(Paths.get("源"),Paths.get("目标"));
4.记住常用的流类型
字节流
InputStream
FileInputStream
OutputStream
FileOutputStream
字符流
Reader
FileReader
Writer
FileWriter
缓冲流:使用Buffer缓冲区
5.读写文件:
读文件:
InputStream in=new FileInputStream("文件的位置");
byte[] b=new byte[1024];
int len=in.read(b);
while(len!=-1){
//
String str=new String(b,0,len);
len=in.read(b);
}
in.close();
写文件:
OutputStream out=new FileOutputStream("文件的位置",true);
byte[] b="".getBytes();
out.write(b);
out.close();
-----------------------------------------------------------------------------
1.读取文件中的内容把其中所有的字母a替换为 * 后保存


2.程序运行时,可以每天创建一个当天日期文件夹和文件


将来文件上传的时候 每一天创建一个目录


Date date=new Date();
SimpleDateFormat f=new SimpleDateFormat("yyyyMMdd");
String name=f.format(date);
String path="d:\\"+name;
File f=new File(path);
if(!f.exists()){
f.mkdir();
}
File file=new File(f,name+".txt");//20180522.txt
if(!file.exists()){
file.createNewFile();
}


字符流

    

 

    、字符流

path:接口 对应的硬盘中的路径,就是File

paths 终态的工具类,就是把一个String 类型的路径 转换为path 的对象

、文件上传

try { Path xxx =paths.get("xx");

        path xxxx=paths.get("xxx");

Files.copy(xxx,xxxx)

}catch(Exception ex){

        }

每次更新时间,创建一个文件;

-----------------------------------------------------------

0523

1.excel的读写

使用的Appach 提供的 POI 

xls  表示低版本 使用HSSFXxxx 相关的类处理

xlsx 表示高版本 使用XSSFXxxx 相关的类处理

Excel文件是由 工作簿---包含---sheet页---行-----包含---列---包含----数据

public static void main(String[] args) {
        //创建一个工作簿
        HSSFWorkbook wb=new HSSFWorkbook();
        //创建sheet页
        HSSFSheet sheet=wb.createSheet("图书信息");
        //在Sheet 页中创建行
        HSSFRow r=sheet.createRow(0);
        //在行中创建列
        HSSFCell cell=r.createCell(0);
        cell.setCellValue("编号");
        cell=r.createCell(1);
        cell.setCellValue("姓名");
        cell=r.createCell(2);
        cell.setCellValue("电话");
        File file=new File("d:\\neuedu\\学生.xls");
        try {
            OutputStream out=new FileOutputStream(file);
            wb.write(out);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

读取Excel文件是 由 工作簿---包含---sheet页---行-----包含---列---包含----数据

  String file="d:\\neu\\test.xls";
        InputStream in=new FileInputStream(file);
            read(in);
    }
    public static void read(InputStream in){
        try {
            HSSFWorkbook wb=new HSSFWorkbook(in);
            //获取第一个Sheet的数据
            HSSFSheet sheet=wb.getSheetAt(0);
            获取sheet中的行数
            int rowNums=sheet.getPhysicalNumberOfRows();
            //获取第一行中的列数,代表了该sheet页中每一行的最大列数
            int CellNums=sheet.getPhysicalNumberOfRows();
            //遍历除了第一行以外的其他行数据
            for (int i = 1; i <rowNums ; i++) {
            //获取i  对应的每一行
                HSSFRow row=sheet.getRow(i);
                //获取改行的列数
                //该方法获取的最后一个有数据的列为准
                //列标题所在行中 列数 是 该sheet 页中 列数最多的行
                for (int j = 0; j <CellNums ; j++) {
                    String value="";
                    HSSFCell cell=row.getCell(j);
                    if(cell==null){//表示该列中有数据
                        value="   ";
                    }else {//说名列中有数据
                        //获取每一列中的数据
                        value=cell.toString();
                    }
                    System.out.print(value+"\t");
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值