观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

前言

  记录一些java或者kotlin的文件读写的操作

 

文本单行读写

    try {
        File sourceFile = new File("C:\\Users\\prize\\Desktop\\Demo1\\盗墓笔记7.txt");//创建源文件
        InputStream inputStream = new FileInputStream(sourceFile);//创建输入文件流
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); //创建文本行缓存输入流 导入  缓存输入流
        File targetFile = new File("F:\\手机T卡资料\\直接复制T卡\\EBOOK\\复制的书.txt"); //创建复制的目标文件
        if (targetFile.exists()) { //判断文件是否存在
            targetFile.delete(); //删除文件
            targetFile.createNewFile();         //创建文件
        }else {
            targetFile.createNewFile();                
        }
    
        OutputStream out = new FileOutputStream(targetFile); //创建输出文件流
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out)); //创建文本缓存输出流 导入 缓存输出流
        String aString = null; //给一行的内容准备的String
        int i = 0;
        while ((aString = reader.readLine()) != null && i<20) { //读取一行,并且赋值给aString,然后在判断不是空值
            //i++;  //此处是为了输出指定数量行数写的 循环自增,
            writer.write("\r\n"+aString); //将内容添加到输出流中
            //System.out.println(aString);
        }
        
        writer.flush(); //刷新输出流
        writer.close(); //关闭流 ,注意流的关闭顺序
        out.close();
        reader.close();
        inputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

数据流的形式读写文件

                int len = 0;
                byte[] bytes = new byte[2048];
                while ((len = fileInputStream.read(bytes)) != -1) {
                    fileOutputStream.write(bytes, 0, len);
                    fileOutputStream.flush();
                }
                fileInputStream.close();
                fileOutputStream.close();

数据流的形式读写分割大文件成若干小文件

fun main() {
    val inputFile = File("C:\\Users\\MLoong\\Desktop\\json\\items.json")
    var outFile = File("C:\\Users\\MLoong\\Desktop\\json\\data0.json")
    println("开始")
    val fileInputStream = FileInputStream(inputFile)
    var fileOutputStream = FileOutputStream(outFile)
    //当前正在拷贝的文件大小
    var curCopyFileSize = 0
    //轮次
    var round = 0
    //当前轮次
    var curRound = 0
    val byteArray = ByteArray(1024)
    //单个文件两兆
    val itemFileSize = 1024 * 1024 * 2
    var length = 0
    while (length != -1) {
        //判断是不是进入了新的轮次
        if (curRound != round){
            curRound = round
            curCopyFileSize = 0
            fileOutputStream.flush()
            fileOutputStream.close()
            outFile = File("C:\\Users\\MLoong\\Desktop\\json\\data${round}.json")
            fileOutputStream = FileOutputStream(outFile)
        }
        length = fileInputStream.read(byteArray)
        fileOutputStream.write(byteArray, 0, length)
        curCopyFileSize += length
        //判断要不要分文件
        if (curCopyFileSize >= itemFileSize) {
            round++
            println("完成${round}")
        }
    }
    fileOutputStream.flush()
    fileOutputStream.close()
    fileInputStream.close()
}

批量处理文件

 public void fileList() {
        File inFile = new File("C:\\Users\\lenovo\\Desktop\\copy\\color");
        File [] files = inFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            files[i].delete();
            System.out.println(files[i].toString());
            
        }
posted on 2018-03-26 13:43  观心静  阅读(394)  评论(0编辑  收藏  举报