Java File相关操作

news2024/12/23 10:26:37

文章目录

  • File文件操作
  • IO流
  • 处理流
    • 缓冲流
    • 转换流
    • 对象流

File文件操作

利用File类来操作。

文件操作中常用到相对目录和绝对路径

package org.File;  
  
import java.io.File;  
  
public class demo01 {  
    public static void main(String[] args) {  
        try{  
            File file = new File("./test.txt");  
//            文件路径是以项目目录为起点的。  
//            创建一个文件。  
            file.createNewFile();  
        }catch (Exception e ) {  
            e.printStackTrace();  
        }  
  
  
  
    }  
}

获取文件名

package org.File;  
  
import java.io.File;  
  
public class demo02 {  
    public static void main(String[] args) {  
        try {  
            File file = new File("src/main/java/org/File/Files/test.txt");  
            file.createNewFile();  
//            不能创建文件夹,创建的是文件  
//            System.out.println(file.getParentFile());//得到上一层文件夹的对象  
//            System.out.println(file.getParent());//得到上一层文件夹  
//            System.out.println(file.exists());//判断文件是否存在  
  
            file.mkdir();file.mkdirs();  
//            创建文件夹,一般选择mkdirs()  
              
        }catch (Exception e ){  
            e.printStackTrace();  
        }  
    }  
}

文件的所有相关操作

package org.File;  
  
import java.io.File;  
  
public class demo02 {  
    public static void main(String[] args) {  
        try {  
            File file = new File("src/main/java/org/File/Files/test.txt");  
            file.createNewFile();  
//            不能创建文件夹,创建的是文件  
//            System.out.println(file.getParentFile());//得到上一层文件夹的对象  
//            System.out.println(file.getParent());//得到上一层文件夹  
//            System.out.println(file.exists());//判断文件是否存在  
  
            file.mkdir();file.mkdirs();  
//            创建文件夹,一般选择mkdirs()  
  
//            重命名  
            file.renameTo(new File("src/main/java/org/File/Files/test2.md"));  
//            删除文件  
            file.delete();  
  
            System.out.println(file.isAbsolute());  
//            判断是否是绝对路劲  
//            判断是不是文件夹  
            System.out.println(file.isDirectory());  
            System.out.println(file.isFile());  
//            判断是不是文件  
  
            System.out.println(file.length());  
//            查看文件大小  
            System.out.println(file.getName());  
//            文件名字。  
                          
  
  
        }catch (Exception e ){  
            e.printStackTrace();  
        }  
    }  
}

创建文件的完整步骤

package org.File;  
  
import java.io.File;  
import java.io.IOException;  
import java.text.FieldPosition;  
  
public class demo03 {  
    public static void main(String[] args) {  
        File file = new File("resource/test.txt");  
//        1、判断上层文件夹是否存在  
        File parentFile = file.getParentFile();  
        if (!parentFile.exists())  
        {  
            parentFile.mkdirs();  
        }  
//        2、创建文件  
        try {  
            file.createNewFile();  
        } catch (IOException e) {  
            throw new RuntimeException(e);  
        }  
  
    }  
}

IO流

流的分类:

  • 按照读写的方向讲,是输入流和输出流
  • 按照读写单位分,字节流和字符流
  • 流的功能不同分,节点流和处理流

流的家族体系

输入输出
字节流InputStreamOutputStream
字符流ReaderWriter

在这里插入图片描述

节点流和处理流
节点流:直接连接在文件上的
处理流:套在其他流上的

文件流:
FileInputStream
FileOutputStream
FileReader
FileWriter

package org.FileStream;  
  
import com.sun.org.apache.xpath.internal.operations.String;  
  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
  
public class demo01 {  
    public static void main(String[] args) throws Exception {  
        //    创建流  
        FileInputStream fils = new FileInputStream(new File("./src/main/resources/a.txt"));  
        int read = fils.read();  
        System.out.println(read);  
//        输出115 s的Ascii码  
        System.out.println((char) read);  
        byte[] bs = new byte[1024];  
        int len = fils.read(bs );  //返回多少个字节  
  
        System.out.println(new String());  
    }  
  
}

读取文件的一套写法

package org.FileStream;  
 
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
 
public class demo02 {  
   public static void main(String[] args) throws Exception {  
       FileInputStream files = new FileInputStream(new File("./src/main/resources/a.txt"));  
       byte[] bytes = new byte[1024];  
       int len=0;  
       while ((len= files.read(bytes))!=-1){  
           String s = new String(bytes, 0, len);  
           System.out.println(s);  
       }  
//        关闭文件流  
       files.close();  
   }  
}

写入文件:

public FileOutputStream(File file, boolean append)

append为true时是在文件后加入数据
默认是false,会清空文件,再添加数据。

package org.FileStream;  
  
import com.sun.org.apache.xpath.internal.operations.String;  
  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileReader;  
  
public class demo04 {  
    public static void main(String[] args) throws Exception {  
        FileReader files = new FileReader(new File("./src/main/resources/a.txt"));  
        char[] cs = new char[1024];  
        int len = 0 ;  
        while ((len = files.read(cs))!=-1){  
            System.out.println(new String(cs,0 ,len));  
  
        }  
        files.close();  
    }  
}
package org.FileStream;  
  
import java.io.File;  
import java.io.FileWriter;  
import java.io.IOException;  
  
public class demo05 {  
    public static void main(String[] args) throws IOException {  
        FileWriter files = new FileWriter(new File("./src/main/resources/a.txt"),true);  
        files.write("simple");  
        files.flush();  
        files.close();  
    }  
}

将一张图片从一个地方复制到另一个地方

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9QbRfYz-1676899099153)(../../images/Pasted%20image%2020230220192957.png)]
就将图片从a移动到b

package org.FileStream;  
  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
  
public class demo06 {  
    public static void main(String[] args) throws Exception {  
        File f = new File("a/ba1.jpg");  
        FileInputStream fis = new FileInputStream(new File("a/ba1.jpg"));  
        FileOutputStream fos = new FileOutputStream(new File("b/bb1.jpg"));  
//        读取内容  
        byte[] bs = new byte[1024];  
        int len =0;  
        while ((len = fis.read(bs))!=-1){//读取数据  
            fos.write(bs,0,len);//写数据  
        }  
        fis.close();  
        fos.flush();  
        fos.close();  
  
//        如果是剪切 ,就把原来的图片删掉就行了  
//        f.delete();  
  
    }  
}

在这里插入图片描述

处理流

缓冲流

带有一个缓冲区的数据流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter

package org.Process_of_Stream;  
  
import java.io.*;  
  
public class demo01_Buffer_stream {  
    public static void main(String[] args) throws Exception {  
//        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("/src/main/resources/a.txt")));  
//        这里面套了三层东西,缓冲区套在节点流上,节点流套在文件流上  
        String path = Thread.currentThread().getContextClassLoader().getResource("a.txt").getPath();  
        System.out.println(path);  
//        获取路径  
  
        BufferedReader br = new BufferedReader(new FileReader(new File(path)));  
  
        System.out.println(br.readLine()); //读文本文件最好用的方法  
        System.out.println(br.readLine());  
  
    }  
}

标准的读取文件的写法

package org.Process_of_Stream;  
  
import java.io.*;  
  
public class demo01_Buffer_stream {  
    public static void main(String[] args) throws Exception {  
//        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("/src/main/resources/a.txt")));  
//        这里面套了三层东西,缓冲区套在节点流上,节点流套在文件流上  
        String path = Thread.currentThread().getContextClassLoader().getResource("a.txt").getPath();  
        System.out.println(path);  
//        获取路径  
  
        BufferedReader br = new BufferedReader(new FileReader(new File(path)));  
  
//        System.out.println(br.readLine()); //读文本文件最好用的方法  
//        System.out.println(br.readLine());  
  
        String str ="";  
        while ((str=br.readLine())!=null ){  
            System.out.println(str);  
        }  
  
    }  
}

转换流

有时需要将流进行转换. 一般我们得到的会是一个字节流. 这是一般我们需要转换成字符流

java中有的转换:
字节流 --> 字符流
InputStreamReader
OutputStreamWriter

package org.Process_of_Stream;  
  
import jdk.nashorn.internal.runtime.regexp.joni.exception.SyntaxException;  
  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Scanner;  
  
public class demo02_Convert_stream {  
    public static void main(String[] args) throws Exception {  
//        系统输入是一个字节流  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
//        通过转换流,将字节流转换成了字符流  
        String s = br.readLine();  
        System.out.println(s);  
    }  
}
package org.Process_of_Stream;  
  
import java.io.IOException;  
import java.io.OutputStreamWriter;  
import java.io.Writer;  
  
public class demo03_Conver_stream {  
    public static void main(String[] args) throws IOException {  
        Writer writer = new OutputStreamWriter(System.out);  
        writer.write("hello simplecatlover");  
        writer.flush();  
//        writer.close();  //这个流不可以关  
  
        System.out.println("sgjagjla");  
    }  
}

对象流

也就是序列化和反序列化接口
两个类:
ObjectInputStream
ObjectOutputStream

类:
一定要implements Serializable

package org.Process_of_Stream.obj;  
  
import java.io.Serializable;  
  
public class Person implements Serializable {  
    private int id;  
    private String name;  
    private int age;  
  
    public Person(int id, String name, int age) {  
        this.id = id;  
        this.name = name;  
        this.age = age;  
    }  
  
    public void setId(int id) {  
        this.id = id;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public int getId() {  
        return id;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
}

序列化:

package org.Process_of_Stream.obj;  
  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.ObjectOutputStream;  
  
public class test1 {  
    public static void main(String[] args) throws Exception {  
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.dat")));  
        Person p = new Person(1,"simple",2);  
        oos.writeObject(p);  
        oos.flush();  
        oos.close();  
  
    }  
}

反序列化:


package org.Process_of_Stream.obj;  
  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.ObjectOutputStream;  
  
public class test1 {  
    public static void main(String[] args) throws Exception {  
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.dat")));  
        Person p = new Person(1,"simple",2);  
        oos.writeObject(p);  
        oos.flush();  
        oos.close();  
  
    }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/359074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java期末复习】《面向对象程序设计》练习库

目录 一、单选题 二、填空题 三、程序填空题 1、 super使用--有如下父类和子类的定义,根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类,求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…

基于某业务单登陆场景并发测试实战

文章目录1 测试目的2 测试目标和测试对象3 名词解释4 测试说明5 测试环境和工具5.1 测试工具5.2 测试环境5.3 人力计划6 测试用例6.1 方案设计6.2 接口地址6.3 接口参数6.3.1 header参数6.3.2 请求参数7 脚本设计8 监控数据8.1 虚拟用户并发情况8.2 事务响应时间8.3 每秒点击次…

IP定位的具体网络应用

IP定位的原理是利用访问终端的注册信息和时延信息来估算现实中的地理位置,结合先进的定位算法服务,最高精确度能达到街道级,深受用户的喜爱。IP定位接口是一种通过IP地址来确定设备或用户位置的技术,主要应用于以下几个方面&#…

Windows平台上达梦数据库的ODBC安装与配置

文章目录概述安装包准备安装ODBC驱动配置ODBC数据源概述 最近很多公司都在响应信创,需要切换到国产数据库,然而很多数据库的一些基础组件的使用都没有一个很明确的官方文档。为了避免更多的人踩坑,本人将踩过的坑总结成博文,分享…

【正点原子FPGA连载】第十四章SD卡读写TXT文本实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十四章SD卡读写…

网络小白入门之路--锐捷RGOS日常管理

锐捷作为网络界的一名重要成员,其设备的管理系统RGOS也是我们要学习的重要一环,那么今天我们就一起看下锐捷RGOS的日常管理。 锐捷设备日常登录方式: 本地登陆: Console登陆:全新或配置清空的设备,需要使…

TeX文件和md文件的转换

1 tex文件转换为md文件 1.1 安装 pandoc 首先安装 pandoc 到你的电脑 pandoc 1.2 命令行 可以在vscode终端输出入以下命令,命令运行路径为tex文件所在 cd tex文件所属的目录 pandoc -s tex文件名.tex -o md的文件名.md1.3预览 发现最后md文件只有一部分转化成…

171、【动态规划】leetcode ——309. 最佳买卖股票时机含冷冻期 (C++版本)

题目描述 原题链接:309. 最佳买卖股票时机含冷冻期 解题思路 本次难点在于多了一个冷冻期,大体的状态过程是三个:持有股票、不持有股票、冷冻期。在不持有股票时候,又可分为之前就不持有股票并继续保持、今天才卖出股票明天是冷…

视频直播美颜sdk的发展史

视频直播美颜sdk的出现是必然的,它的诞生就是为了让更多用户能够更好地体验到视频直播带给大家的快乐,可以说视频直播美颜sdk的发展和用户体验有着紧密联系。今天,小编不聊技术,咱们来聊一下视频直播美颜sdk的诞生以及发展历程。 …

抽奖动画大转盘抽奖思路与做法

抽奖是各类营销活动中最常见的一种形式,本产品需求大致如下:转盘周围跑马灯交替闪烁,点击抽奖,大转盘旋转,调用接口获取抽奖结果,大转盘指针指向对应的奖品。高保如下图12.整体思路本需求要求跑马灯交替闪烁…

PHP Composer 下载依赖项时删除其它不相关文件 导致项目报错 依赖包vendor手动导入

场景 最近项目上需要开发图片文字识别功能,接入了开源的tesseract_ocr,根据官网介绍,使用composer require thiagoalessio/tesseract_ocr命令安装依赖,但是在执行之后,删除了一些文件,导致项目报错。 解…

数据管理之特征仓库

鉴于特征仓库热度下降,特将历史库存放出😄 背景 数据工程师与算法工程师在数据存取上存在沟通成本,基于现状存在以下问题: 提供训练使用的离线特征与在线服务使用的在线特征,构造方式存在差异,离线、在线…

P18 PyTorch 感知机的梯度推导

前言这里面简单介绍一下单层感知机和多层感知机的模型参考:https://www.bilibili.com/video/BV17e4y1q7NG?p41一 单层感知机模型输入: k 代表网络层数,i 代表输入节点的编号前向传播: 权重系数k: 层数i: 前一层输入节点编号j: 当前层输出节点编号这里&a…

Python opencv进行圆形识别(圆检测)

圆形识别(圆检测)是图像识别中很常见的一种处理方式,最核心的是cv2.HoughCircles这个函数实现的圆形检测。当然还有一些其他的处理过程,以下详述: 1 读入图像 首先需要读取一个图像文件,将其作为一个变量…

Java 字符串

文章目录一、API二、String1. String 构造方法2. String 对象的特点3. 字符串的比较4. 用户登录案例5. 遍历字符串6. 统计字符次数7. 拼接字符串8. 字符串反转三、StringBuilder1. 构造方法2. 添加及反转方法3. 与 String 相互转换4. 拼接字符串升级版5. 字符串反转升级版一、A…

【Java】Spring核心与设计思想

文章目录Spring核心与设计思想1. Spring是什么1.1 什么是容器1.2 什么是IOC1.2.1 传统程序开发1.2.2 控制反转式程序开发1.2.3 对比总结规律1.3 理解Spring IOC1.4 DI概念说明Spring核心与设计思想 1. Spring是什么 我们通常所说的Spring指的是Spring Framework(S…

工业4.0和工业物联网如何协同工作

虽然许多公司已经接受了工业物联网,但他们现在必须接受工业4.0对数据驱动的数字化转型的承诺。随着制造业、能源、公用事业和供应链应用迅速采用工业物联网(IIoT),这些行业的新现实正在形成。工业物联网提供了企业管理数千个活动部件所需的数据类型&…

二、最基本的vuex的使用

二、最基本的vuex的使用: 学习任何技术,先找到没有用这个技术时,给我们带来了什么麻烦 而这个新技术是怎么帮我们解决这些问题的。 理解方式: state:装数据的一个对象 mutations:装方法的一个对象&#…

FPGA纯Verilog实现任意尺寸图像缩放,串口指令控制切换,贴近真实项目,提供工程源码和技术支持

目录1、前言2、目前主流的FPGA图像缩放方案3、本方案的优越性4、详细设计方案5、vivado工程详解6、上板调试验证并演示7、福利:工程源码获取1、前言 代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植; 图…

steam搬砖信息差项目,新手1周拿到结果!

项目具体是什么呢? 项目简单概括通过选品软件自动分析出此商品国内外商品价格,计算出利润率,选择出有利润销量好的商品,在以最低价格上架到国内buff的平台里,既能快速的卖出,还能获利。 主要利润在于商品…