当前位置: 首页 > news >正文

花几千上万学习Java,真没必要!(三十八)

 

 

 

 

 

测试代码1:

package iotest.com;
import java.nio.charset.StandardCharsets;  
import java.io.UnsupportedEncodingException;  public class StringByteConversion {  public static void main(String[] args) throws UnsupportedEncodingException {  // 原始字符串  String originalString = "Hello, 世界!";  byte[] defaultBytes = originalString.getBytes();  String defaultDecodedString = new String(defaultBytes);  System.out.println("默认字符集编码后解码: " + defaultDecodedString);  // 使用指定的字符集(UTF-8)编码字符串  byte[] utf8Bytes = originalString.getBytes(StandardCharsets.UTF_8.name());  String utf8DecodedString = new String(utf8Bytes, StandardCharsets.UTF_8.name());  System.out.println("UTF-8编码后解码: " + utf8DecodedString);  // 尝试使用ISO-8859-1(不支持中文)编码和解码字符串,以展示可能的乱码  try {  byte[] isoBytes = originalString.getBytes("ISO-8859-1");  String isoDecodedString = new String(isoBytes, "ISO-8859-1");  System.out.println("ISO-8859-1编码后解码(可能导致乱码): " + isoDecodedString);  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

 

测试代码2:

package iotest.com;
import java.io.ByteArrayInputStream;  
import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;   
import java.io.OutputStreamWriter;  public class StreamMergerExample {  public static void main(String[] args) {  try {  // 创建一个ByteArrayOutputStream捕获写入的字节  ByteArrayOutputStream byteStream = new ByteArrayOutputStream();  // 使用UTF-8字符编码创建OutputStreamWriter  OutputStreamWriter writer = new OutputStreamWriter(byteStream, "UTF-8");  // 写入文本  writer.write("Hello, 世界!");  // 刷新OutputStreamWriter,确保所有内容都被写入到底层ByteArrayOutputStream  writer.flush();  // 关闭OutputStreamWriter// writer.close(); // 如果不打算重用byteStream,可以调用close()  // 读取需要将其转换为ByteArrayInputStream  InputStream inputStream = new ByteArrayInputStream(byteStream.toByteArray());  // 使用UTF-8字符编码(与写入时相同)创建InputStreamReader  InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");  // 可以用BufferedReader读取  int c;  while ((c = reader.read()) != -1) {  // 打印int的字符表示  if (c >= 0 && c <= 0xFFFF) { // 有效性检查(Java中的char是16位的)  System.out.print((char) c);  }  }  //如果使用的是包装流的类(如BufferedReader),则应该关闭。  System.out.println("\n读取完成。");  } catch (IOException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

测试代码3:

package iotest.com;
import java.io.BufferedWriter;  
import java.io.FileWriter;  
import java.io.IOException;  
public class WriterExample {public static void main(String[] args) {try {// 创建一个BufferedWriter对象写入文件BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));// 写一个字符writer.write('A');// 写入一个字符数组char[] charArray = {'B', 'C', 'D'};writer.write(charArray);// 写入字符数组的一部分writer.write(charArray, 1, 2);// 刷新流writer.flush();// 关闭流writer.close();} catch (IOException e) {e.printStackTrace();}}
}

测试代码4:

package iotest.com;
import java.io.BufferedReader;  
import java.io.BufferedWriter;   
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  public class FileReadWriteUTF8Example {  public static void main(String[] args) {  // 指定文件路径  String filePath = "E:\\Test\\a.txt";  // 写入文件,使用UTF-8编码  try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"))) {  String content = "这是一段测试文本,使用UTF-8编码写入。默认使用平台的默认字符编码。如果需要在不同平台间共享文件,或者文件包含特殊字符(如中文),使用显式的字符编码,如UTF-8。";  writer.write(content);  System.out.println("写入成功。");  } catch (IOException e) {  e.printStackTrace();  }  // 读取文件,使用UTF-8编码,并打印到控制台  try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"))) {  String line;  while ((line = reader.readLine()) != null) {  System.out.println(line);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

测试代码5:

package iotest.com;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {  public static void main(String[] args) {  try {  // 创建一个FileReader对象读取文件  FileReader reader = new FileReader("E:\\Test\\a.txt");  // 使用read方法一次读取一个字符数据  int charData;  while ((charData = reader.read()) != -1) {  System.out.print((char) charData); // 打印读取的字符  }  System.out.println(); //方法换行  // 使用read一次读取一个字符数组数据  char[] charArray = new char[3];  int numCharsRead;  //使用read方法逐个读取字符并打印出来,直到文件末尾(-1)。while ((numCharsRead = reader.read(charArray)) != -1) {  // 只打印实际读取的字符数  for (int i = 0; i < numCharsRead; i++) {  System.out.print(charArray[i]);  }  }  // 关闭流  reader.close();  } catch (IOException e) {  e.printStackTrace();  }  }  
}

测试代码6:Copy文本。

package iotest.com;
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  //readLine()方法读取一行文本。//它读取字符直到遇到换行符(\n)、回车符(\r)、回车后紧跟换行符(\r\n)或到达文件末尾。//返回包含该行内容的字符串,但不包括任何行终止符。//如果已到达流的末尾且没有更多的行可供读取,则返回null。//readLine()为按行读取文本文件内容的理想选择。
public class FileCopyTest {  public static void main(String[] args) {  String sourceFile = "E:\\Test\\a.txt";  String destFile = "D:\\AA\\destination.txt";  BufferedReader br = null;  BufferedWriter bw = null;  try {  br = new BufferedReader(new FileReader(sourceFile));  bw = new BufferedWriter(new FileWriter(destFile));  String line;  //readLine()按行读取源文件的内容while ((line = br.readLine()) != null) {  bw.write(line);  bw.newLine(); // 写入行分隔符  }  System.out.println("文件复制成功!");  } catch (IOException e) {  e.printStackTrace();  System.out.println("文件复制失败!");  } finally {  try {  if (br != null) {  br.close();  }  if (bw != null) {  bw.close();  }  } catch (IOException e) {  e.printStackTrace();  }  }  }  
}

测试代码7:字符缓冲流复制文件

package iotest.com;
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
public class FileCopyExample {  public static void main(String[] args) {  String sourceFile = "D:\\AA\\a.txt";  String destFile = "E:\\Test\\a.txt";  // 确保目标目录存在FileReader fileReader = null;  FileWriter fileWriter = null;  try {  fileReader = new FileReader(sourceFile);  fileWriter = new FileWriter(destFile);  char[] buffer = new char[1024]; // 使用一个缓冲区存储读取的字符  int numCharsRead;  // 循环读取文件直到到达末尾  while ((numCharsRead = fileReader.read(buffer)) != -1) {  // 写入实际读取的字符数到目标文件  fileWriter.write(buffer, 0, numCharsRead);  }  System.out.println("文件复制成功!");  } catch (IOException e) {  e.printStackTrace();  System.out.println("文件复制失败!");  } finally {  // 关闭资源  try {  if (fileReader != null) {  fileReader.close();  }  if (fileWriter != null) {  fileWriter.close();  }  } catch (IOException e) {  e.printStackTrace();  }  }  }  
}

 

 

 

 

 

 

相关文章:

花几千上万学习Java,真没必要!(三十八)

测试代码1&#xff1a; package iotest.com; import java.nio.charset.StandardCharsets; import java.io.UnsupportedEncodingException; public class StringByteConversion { public static void main(String[] args) throws UnsupportedEncodingException { // 原始字…...

Zilliz 2025届校园招聘正式启动,寻找向量数据库内核开发工程师

为了解决非结构化数据处理问题&#xff0c;我们构建了向量数据库-Milvus! Milvus 数据库不仅是顶级开源基金会 LF AI&Data 的毕业项目&#xff0c;还曾登上数据库顶会SIGMOD、VLDB&#xff0c;在全球首届向量检索比赛中夺冠。目前&#xff0c;Milvus 项目已获得超过 2.8w s…...

TwinCAT3 新建项目教程

文章目录 打开TwinCAT 新建项目&#xff08;通过TcXaeShell&#xff09; 新建项目&#xff08;通过VS 2019&#xff09;...

大模型算法面试题(十九)

本系列收纳各种大模型面试题及答案。 1、SFT&#xff08;有监督微调&#xff09;、RM&#xff08;奖励模型&#xff09;、PPO&#xff08;强化学习&#xff09;的数据集格式&#xff1f; SFT&#xff08;有监督微调&#xff09;、RM&#xff08;奖励模型&#xff09;、PPO&…...

应用地址信息获取新技巧:Xinstall来助力

在移动互联网时代&#xff0c;应用获取用户地址信息的需求越来越普遍。无论是为了提供个性化服务&#xff0c;还是进行精准营销&#xff0c;地址信息都扮演着至关重要的角色。然而&#xff0c;如何合规、准确地获取这一信息&#xff0c;却是许多开发者面临的挑战。今天&#xf…...

图的最短路径算法:Dijkstra、Floyd-Warshall、Bellman-Ford

本文意在探讨图中最短路径算法 Dijkstra、Floyd-Warshall、Bellman-Ford 的对比和细节 整体分为如下四部分 总结性的比较了 Dijkstra、Floyd-Warshall、Bellman-FordDijkstra 算法介绍Floyd-Warshall 算法介绍Bellman-Ford 算法介绍 其中1、2、3 算法介绍部分会比较简洁&…...

Camera的pipline(TODO)

&#xff08;TODO&#xff09;...

非关系数据库-非关系数据库入门指南

非关系数据库入门指南 1. 引言&#xff1a;非关系数据库的兴起​ 在互联网技术飞速发展的今天&#xff0c;传统的关系型数据库面对海量数据和高并发访问时逐渐显得力不从心。于是&#xff0c;非关系数据库&#xff08;NoSQL&#xff0c;Not Only SQL&#xff09;应运而生&…...

看门狗IWDG、WWDG(速记版)

内置的看门狗有 独立看门狗 IWDG 和 窗口看门狗 WWDG 都用来在程序卡死的时候复位程序。 独立看门狗只有一个最晚时间界限。窗口看门狗有一个最早界限和最晚界限。独立看门狗有独立的时钟,一般设置来源时钟LSI40KHz。窗口看门狗挂靠在APB1总线上36MHz。 IWDG IWDG处于VDD供…...

ETL工程师角度下的SQL优化

作为ETL&#xff08;Extract, Transform, Load&#xff09;工程师&#xff0c;SQL优化是提高数据处理和分析效率的关键一环。优化SQL查询可以显著降低数据处理时间&#xff0c;提高ETL过程的性能。本文将从 合理设计数据模型&#xff1a;在ETL过程中&#xff0c;正确的数据模型…...

阿里云实时计算Flink在多行业的应用和实践

摘要&#xff1a;本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践&#xff0c;对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术&#xff0c;并且提供一些在技术架构上的参考建议。内容分为以下四个部分&#xff1a; 业…...

开源项目与工具:C++中的高性能并发库 - Intel Threading Building Blocks (TBB)

在C++的世界里,随着多核处理器成为常态,如何有效利用这些多核资源以实现高性能的并发编程成为了开发者们关注的焦点。Intel Threading Building Blocks (TBB) 作为一个专为并行编程设计的C++库,凭借其易用性、高效性和可扩展性,在高性能计算、游戏开发、金融分析等多个领域…...

Chapter 22 数据可视化——折线图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、Pyecharts介绍二、安装Pyecharts三、全局配置项四、绘制折线图 前言 在大数据时代&#xff0c;数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 …...

管理流创建schema流程源码解析

一、简析 schema是pulsar重要的功能之一&#xff0c;现在就一起从源码的视角看下管理流创建schema时客户端和服务端的表现 客户端 客户端主要经历以下四个步骤 创建Schema实例 根据数据类型创建相对应的实例&#xff0c;例如Avro创建AvroSchema、JSON创建JSONSchema等 获取…...

【iOS】iOS内存五大分区

iOS内存五大分区 总揽 iOS中&#xff0c;内存主要分为五大区域&#xff1a;栈区&#xff0c;堆区&#xff0c;全局区/静态区&#xff0c;常量区和代码区。总览图如下。 这个图我觉得更好记&#xff0c;因为下面是低地址&#xff0c;上面是高地址&#xff0c;是比较符合日常…...

【项目实战】—— 高并发内存池

文章目录 什么是高并发内存池&#xff1f;项目介绍一、项目背景二、项目目标三、核心组件四、关键技术五、应用场景六、项目优势 什么是高并发内存池&#xff1f; 高并发内存池是一种专门设计用于高并发环境下的内存管理机制。它的原型是Google的一个开源项目tcmalloc&#xff…...

二叉搜索树的第 k 大的节点

题目描述 给定一棵二叉搜索树&#xff0c;请找出其中第 k 大的节点。 解题基本知识 二叉搜索树&#xff08;Binary Search Tree&#xff09;又名二叉查找树、二叉排序树。它是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a; 若它的左子树不空&#xff0c;则左子…...

利用langchain 做大模型 Few-shot Learning 提示,包括固定和向量相似的动态样本筛选

文章目录 few-shotFixed Examples 固定样本Dynamic few-shot prompting 动态样本提示辅助参考资料 few-shot 相比大模型微调&#xff0c;在有些情况下&#xff0c;我们更想使用 Few-shot Learning 通过给模型喂相关样本示例&#xff0c;让模型能够提升相应任务的能力。 固定样…...

基于python的百度迁徙迁入、迁出数据分析(五)

终于在第五篇文章我们进入了这个系列的正题&#xff1a;数据分析 这里我选择上海2024年5月1日——5月5日的迁入、迁出数据作为分析的基础&#xff0c;首先选择节假日的数据作为分析的原因呢&#xff0c;主要是节假日人们出行目的比较单一&#xff08;出游、探亲&#xff09;&a…...

SpringBoot 如何处理跨域请求

SpringBoot 处理跨域请求&#xff0c;通常是通过配置全局的 CORS&#xff08;跨源资源共享&#xff09;策略来实现的。CORS 是一种机制&#xff0c;它使用额外的 HTTP 头部来告诉浏览器&#xff0c;让运行在一个 origin (domain) 上的 web 应用被准许访问来自不同源服务器上的指…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

轻量安全的密码管理工具Vaultwarden

一、Vaultwarden概述 Vaultwarden主要作用是提供一个自托管的密码管理器服务。它是Bitwarden密码管理器的第三方轻量版&#xff0c;由国外开发者在Bitwarden的基础上&#xff0c;采用Rust语言重写而成。 &#xff08;一&#xff09;Vaultwarden镜像的作用及特点 轻量级与高性…...