同步代码块、io、file常用的方法、流

2023-11-10

一、同步

1、同步代码块

把要实现线程安全的代码放在同步代码块中

java中任何对象内部都有一个开关,你可以理解为标志位,1就是表示关,0就表示开

2、同步方法

二、io

input输入

output输出

计算机中的文件以及文件中的内容

File控制计算机中的文件和文件夹

三、file常用的方法

四、编码格式

String和byte转换

 五、流

管道、java语言操作文件中得内容就需要流

根据流向去划分:

输入流(向内存,走就是输入)

输出流(从内存往外走,叫输出)

根据传输内容划分

字节流

字符流

字节型文件、字符型文件

txt打开乱码就是字节型文件,不乱码就是字符型文件

根据依赖其他流的程度划分

低级流   不依赖于任何流

高级流   依赖于低级流

字节输入流 InputStream

字节输出流 OutputStream

字符输入流Reader

字符输出流Writer

六、读取文本内容

 

File file = new File("d:/a/haha.txt");
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
            int num = -1;
            StringBuilder sb = new StringBuilder();
            while((num = fis.read()) != -1) {
                sb.append((char)num);
            }
            System.out.println(sb.toString());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

 七、向文本中写入内容

 

File file = new File("d:/a/hehe.txt");
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file);
            fos.write('a');
            fos.flush();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

 八、缓冲

File file = new File("d:/a/haha.txt");
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
            byte[] buff = new byte[1024];
            int length = -1;
            StringBuilder sb = new StringBuilder();
            while((length = fis.read(buff)) != -1) {
                String str = new String(buff,0,length);
                sb.append(str);
            }
            System.out.println(sb.toString());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

九、向文本写入很多内容

File file = new File("d:/a/hehe.txt");
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file,true);
            fos.write("gdasgdystdsgdhwgdyyuw".getBytes());
            fos.flush();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

十、自带缓存

File file = new File("d:/a/haha.txt");
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        BufferedInputStream bis = new BufferedInputStream(fis);

十一、对象序列化 

存到文件中

Human human = new Human(1, "能能");
        File file = new File("d:/a/haha.txt");
FileOutputStream fos = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(human);
        oos.flush();

 从文件取

File file = new File("d:/a/haha.txt");
        FileInputStream fis = new FileInputStream(file);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Human human1 = (Human)ois.readObject();
        System.out.println(human1.getId());
        System.out.println(human1.getUsername());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同步代码块、io、file常用的方法、流 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • python自动化访问百度地图

    要在 Python 中自动化访问百度地图 你可以使用第三方库 selenium 来实现 Selenium 是一种自动化测试工具 可以模拟用户在浏览器上执行操作 首先 你需要安装 Selenium 可以通过运行以下命令来安装它 pip ins
  • Go语言面试题--基础语法(16)

    文章目录 1 f1 f2 f3 函数分别返回什么 2 下面代码段输出什么 3 关于channel的特性 下面说法正确的是 1 f1 f2 f3 函数分别返回什么 func main fmt Println f1 fmt Println f2
  • 【HDLBits 刷题 13】Buliding Larger Circuits

    目录 写在前面 Buliding Larger Circuits count1k shiftcount fsm seq fsmshift fsm fancytimer fsm onehot 写在前面 以下的解题方法不一定为最佳解决方案 有更
  • 构造树型结构数据

    构造树型结构数据 param data 数据源 param id id字段 默认 id param parentId 父节点字段 默认 parentId param children 孩子节点字段 默认 children export fu
  • AUC的计算、物理意义,

    文章目录 一 定义 二 性质 三 计算 3 1 方法一 根据定义 3 2 方法二 根据意义 3 3 方法三 方法二优化 3 4 方法四 工业场景 四 物理意义推导 一 定义 ROC曲线与坐标轴围成的面积 ROC曲线由不同阈值下 TPR Y轴
  • Linux内核在I386架构下的内存管理

    转载自 http blog csdn net li shyng article details 5545973 同类型的 http www kerneltravel net journal ii I386是Intel的x86系列CUP中一个
  • 前端页面有那三层构成,分别是什么?作用是什么?

    结构 表现和行为 其中结构主要是有HTML标签组成 结构即在页面body里面我们写入的标签都是为了页面的结构 表现即指css样式表 通过css可以是页面的结构标签更具美感 行为是指页面和用户具有一定的交互 同时页面结构或者表现发生变化 主要
  • 接口测试工具-apifox

    Apifox 是 API 文档 API 调试 API Mock API 自动化测试一体化协作平台 定位 Postman Swagger Mock JMeter 通过一套系统 一份数据 解决多个系统之间的数据同步问题 只要定义好 API 文档
  • 将一个网页设置为屏保

    有没有试过将一个网页作为屏保 最近我正好有这个需求 一些需要给家里人经常看到的提示信息 如果定闹钟多了大家嫌烦 我口头提示多了比闹钟还烦 印在A4纸上贴墙上既影响美观又不容易修改内容 打印还要花银子 自己写字又不好看 突然想到我几乎每天早上
  • Unity播放音频

    在Unity中 可以在物体上添加AudioSource组件来播放音频 AudioSource组件可以控制音频文件的播放 音量 音调 空间效果等属性 以下是在物体上添加AudioSource组件的步骤 1 在Unity中打开场景 选择您想要添
  • tensorflow-gpu 2.3.0安装 及 相关对应版本库安装(Anaconda安装)

    目录 如需转载 请标明出处 谢谢 一 安装tensorflow gpu2 3 0 二 配置其他相关的库 很多人以为安装完tensorflow gpu就是一切都结束了 但是殊不知 python中的很多库 比如numpy matplotlib等
  • 【JavaScript数据结构与算法】一、栈及leetcode实战

    栈 栈是一种遵从后进先出 LIFO 原则的有序集合 新添加或待删除的元素都保存在栈的同一端 称作栈顶 另一端就叫栈底 在栈里 新元素都靠近栈顶 旧元素都接近栈底 栈数据结构 我们需要一种数据结构来保存栈里的元素 可以选择数组 数组允许我们在
  • 数据库查询优化 --- 索引 Index

    数据库查询优化 索引 Index 什么是索引 索引的实现方法 聚集索引 和 非聚簇索引 聚集索引 非聚集索引 组合索引 索引的使用 适合使用索引的场景 不适合使用索引的场景 SQL创建索引 什么是索引 没有加索引的数据 它的数据无序的放置在
  • 串级PID与单极PID的区别

    目录 前言 一 什么是串级PID 二 串级PID与单极PID比较 1 控制小车开到某一位置 2 平衡小车速度控制 三 什么时候用串级PID 结语 前言 本文将讲述串级PID与单极PID的区别 并由此引出什么时候用串级PID 对于想深入学习P
  • electron vue3 + ts 初始化项目

    新建 vue3 ts 项目 npm init vitejs app electron demo 选择 vue ts 等待项目创建完成 安装 electron npm i electron D 确认 node modules electron
  • 【C++入门】运算符重载详解

    1 什么是运算符重载 不可重载运算符 运算符含义 成员访问运算符 gt 和 成员指针访问运算符 域运算符 sizeof 长度运算符 条件运算符 预处理符号 1 运算符 运算符分为算术运算符 关系运算符 逻辑运算符 等 2 运算符重载 给运算
  • idea授权服务器

    这里提供一个我已经搭建好的idea授权服务器 http ysk521 cn 1017
  • ctfshow萌新红包题writeup

    ctfshow萌新专属红包题writeup 题目来源 https ctf show 这一题是ctfshow平台上面2月17日更新的一个萌新红包题 当天在官方交流群内知道晚上会有一个萌新红包题之后 就有点期待了 小萌新也想拿一次红包 嘿嘿 下
  • 推挽输出和开漏输出区别

    推挽输出 可以输出高 低电平 连接数字器件 输出 0 时 N MOS 导通 P MOS 高阻 输出0 输出 1 时 N MOS 高阻 P MOS 导通 输出1 不需要外部上拉电路 开漏输出 输出端相当于三极管的集电极 要得到高电平状态需要上
  • 同步代码块、io、file常用的方法、流

    一 同步 1 同步代码块 把要实现线程安全的代码放在同步代码块中 java中任何对象内部都有一个开关 你可以理解为标志位 1就是表示关 0就表示开 2 同步方法 二 io input输入 output输出 计算机中的文件以及文件中的内容 F