File 类,InputStream, OutputStream 的用法

news2024/11/15 23:26:42

目录

一.File类

关于名字和路径的操作

关于创建和销毁的操作

创建文件夹(多级目录)

 InputStream

第一种:字节流读取

第二种: 字符流读取(Reader)

 OutputStream 

第一种:字节流写入

 第二种方式:字符流输入


一.File类

File翻译过来"文件"

那么File类的操作实际上就全部是对文件进行操作

关于名字和路径的操作

    public static void main(String[] args) {
//虚拟一个名字叫做test.txt的文件,但这一步只是虚拟的,还没有创建
        File file = new File("./test.txt");
        System.out.println(file.getParent());//获取这个文件的父目录的路径
        System.out.println(file.getName());//获取这个文件的名字
        System.out.println(file.getPath());//获取这个文件的相对路径
        System.out.println(file.getAbsolutePath());//获取这个文件的绝对路径
    }

关于创建和销毁的操作

    public static void main(String[] args) throws IOException {
//拟创建一个叫做Test.txt的文件,但还没创建
        File file = new File("./Test.txt");
//真的在计算机的当前目录创建了这个文件
        file.createNewFile();
        System.out.println(file.isFile());//判断是否是普通文件
        System.out.println(file.isDirectory());//判断是否是目录文件
        System.out.println(file.exists());//判断这个文件是否存在
        System.out.println(file.delete());//删除这个文件
        System.out.println(file.exists());
    }

创建文件夹(多级目录)

    public static void main(String[] args) {
        File file = new File("./hello1");
        File file2 = new File("./hello2/6666");
        file.mkdir();//只能创建一级目录
        file2.mkdirs();//能创建多级目录
    }

 InputStream

就是从文件里面读取数据

一般有两种读取方式

第一种:字节流读取

(读写的基本单位是字节)

基本方法: read() :读取一个字节的数据,返回-1代表读取完毕

使用

我们先在D盘创建一个名字叫做hello.txt的文件,然后输入hello

 

    public static void main(String[] args) throws FileNotFoundException {
        InputStream inputStream = new FileInputStream("D:/hello.txt");//这里输入读取的文件地址,如果输入错误会报错无法读取
        while(true){
            try {
                int ret = inputStream.read();//如果全部读取完毕返回-1
                if(ret == -1){
                    break;
                }
                System.out.println(ret);

            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }

    }

输出的为对应的ASCII码~

 

第二种: 字符流读取(Reader)

运行原理和字节流读取一样,唯一不同的是在屏幕上显示的是字符而不是ask表对应的数字

    public static void main(String[] args) throws FileNotFoundException {
        Reader reader = new FileReader("D:/hello.txt");
        while(true){
            try {
                int ret = reader.read();
                if(ret == -1){
                    break;
                }
                System.out.println((char)ret);

            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }

    }

 OutputStream 

就是向文件里面写数据

一般有两种写入方式

第一种:字节流写入

基本方法: write() 

    public static void main(String[] args) throws FileNotFoundException {
        OutputStream outputStream = new FileOutputStream("d:/hello.txt");
        try {
//注意,这里的98,99,100是ask码表对应的数字的字符,不是数字98,99,100
            outputStream.write(98);
            outputStream.write(99);
            outputStream.write(100);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

 第二种方式:字符流输入

这种方式一定要注意在最后使用flush方式

把存储在内存中的字节流拿出来

否则会什么都没有但是程序依然不报错

    public static void main(String[] args) throws IOException {
        Writer writer = new FileWriter("d:/hello2.txt");
        writer.write("hello");
//一定要加上flush!!!!!
//一定要加上flush!!!!!
//一定要加上flush!!!!!
        writer.flush();
    }

 

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

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

相关文章

【初识 Docker | 中级篇】 Docker 安装 Redis

文章目录 前言一、安装 docker1、安装docker2、安装docker-compose 二、redis 单机安装1.创建配置文件1.1.创建目录1.2.创建redis.conf1.3.创建docker-compose.yml 2.启动redis容器 总结 前言 可以按照以下步骤在 Docker 中安装 Redis docker pull redis 拉取Redis镜像 docker…

CSS3-定位

网页常见布局方式 1 标准流 1 块级元素独占一行 → 垂直布局 2 行内元素/行内块元素一行显示多个 → 水平布局 2 浮动 可以让原本垂直布局的 块级元素变成水平布局 3 定位 1 可以让元素自由的摆放在网…

软件项目管理 第五章 软件项目的成本管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

第五章 软件项目的成本管理 课后习题参考答案 1.选择题 (1)(A)是用系统的功能数量来测量其规模,与实现产品所使用的语言和技术是没有关系的。 A.功能点 B.对象点 C.代码行 D.用例点 (2)如果你是某项目的项目经理,你已经估…

easyX库文字输出相关函数(注释版)

您好这里是limou3434的博文系列,感兴趣的话可以看看我的其他系列。 本次我给您带来的是easyX库的字符输出系列函数,祝您看得开心。 0.文字输出函数概览 函数或数据类型描述LOGFONT文字样式的结构体。settextcolor设置当前文字颜色。settextstyle设置当…

Altium Designer VS CADENCE 颜色配置

最近公司要求用CADENCE画图,对于我这个用了10年以上AD的老玩家来说,真的是很不想接受,虽然AD有版权问题,据说也容易收到律师函,但还是不想更换,毕竟用了10年了,感情、熟练程度摆在那里。没办法&…

继承的基本内容

在面向对象部分提到过,面向对象三大特性(不是只有三个特性,而是指存在感最强的三个特性):封装,继承,多态。 封装:对比C语言,将数据和处理数据的方法放入一个类中&#xf…

【算法总结】——组合型回溯

文章目录 组合型回溯例题1——组合从输入考虑模板从答案考虑模板 例题2——括号生成解法一解法二 剪枝分析回溯时间复杂度的通用方法 组合型回溯 组合型和子集型之间的差异在哪里呢? 相比子集问题,组合问题是可以做一些额外的优化的(因为只…

Linux模块文件编译到内核与独立编译成.ko文件的方法

很多粉丝在群里提问,如何把一个模块文件编译到内核中或者独立变异成ko文件。本文给大家详解讲解。 1. 内核目录 Linux内核源代码非常庞大,随着版本的发展不断增加。它使用目录树结构,并且使用Makefile组织配置、编译。 初次接触Linux内核&…

Visual Studio 2022写Windows程序造成CPU占用率过高故障排除

我是荔园微风,作为一名在IT界整整25年的老兵,今天针对Visual Studio 2022写Windows程序造成CPU占用率过高故障进行排除。 下面是一个标准的Windows程序,也可以说是经典程序了,但是这个程序一运行,WinMain.exe的CPU占用…

Android 13(T) - binder阅读(2)- ServiceManager的启动与获取

1 ServiceManager的启动 1.1 服务的启动与注册 上一篇笔记中有说到,ServiceManager是一个特殊的binder service,所以它和普通的service一样需要打开binder驱动,在驱动中创建一个属于ServiceManager进程的binder_proc。 int main(int argc,…

django中发送get post请求并获得数据

django中发送get post请求并获得数据 项目结构如下注册路由 urls.py在处理函数中处理请求 views.py进行 get的请求01浏览器 get请求传参数02服务器django get参数解析获取01浏览器 post的发送浏览器get 请求 获取页面返回的 form 发送post请求 带参数 02服务器django的post请求…

【Unity3D】平面光罩特效

1 前言 屏幕深度和法线纹理简介中对深度和法线纹理的来源、使用及推导过程进行了讲解,激光雷达特效中讲述了一种重构屏幕像素点世界坐标的方法,本文将沿用激光雷达特效中重构像素点世界坐标的方法,实现平面光罩特效。 假设平面光罩的高度为 s…

SpringCloud Alibaba入门7之引入服务网关Gateway

我们需要在客户端和服务端之间加一个统一的入口,来作为请求的统一接入,而在微服务的体系中,承担这个角色的就是网关。我们只需要将网关的机器IP配置到DNS,或者接入负载,那么客户端的服务最终通过我们的网关,再转发到对…

GEE:欧几里得距离——计算目标图像中每个像素到目标像素的距离

作者:CSDN @ _养乐多_ 利用欧几里得距离计算目标图像中每个像素到目标像素的距离,以量化像素与目标的接近程度。 结果如下图所示, 文章目录 一、欧几里得距离简介二、代码一、欧几里得距离简介 欧几里得距离(Euclidean distance)是在数学中常用的一种距离度量方式,用于…

Android PMS APP安装流程

仓库网址:http://androidxref.com/9.0.0_r3/xref/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java 一、PMS安装APP流程图 二、文件复制 PMS处理安装HandlerParams安装参数流程图 PackageManagerService.java#installStage…

职场求生记|唐朝打工人如何绝地求生

📚书名:《长安的荔枝》 ✏️作者:马伯庸 作为“见微”系列神作,其在微信读书总榜的第一名位置持续一段时间了,其讲述的内容和每个人都息息相关,更是能引起职场人的无限共鸣,值得深思。 ⭐故事…

使用networkx查看某一个节点的一阶/二阶/三阶邻居

文章目录 前言手动高级 前言 一般情况下,貌似这些图之类的包,只提供查询一个节点的一阶邻居,但是有的时候我们需要二阶甚至三阶,那么该如何做呢? 注意一下,本文的方法仅可以针对二阶或者三阶,…

一分钟 帮你搞懂什么是柔性数组!

文章目录 什么是柔性数组?柔性数组的特点柔性数组的使用模拟实现柔性数组的功能柔性数组的优势 什么是柔性数组? 柔性数组这个概念相信大多数人博友都没有听说过,但是它确实存在。 在C99中,结构(结构体)的…

【雕爷学编程】Arduino动手做(121)---夏普粉尘传感器模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

EMC学习笔记(十一)过孔

过孔 1.过孔模型1.1 过孔的数学模型1.2 对过孔模块的影响因素 2.过孔对信号传导与辐射发射影响2.2 过孔对阻抗控制的影响2.2 过孔数量对信号质量的影响 1.过孔模型 从过去设计的一些PCB板效果来看,过孔对于低频,低速信号的影响是很小的,但是…