Java基础知识05--实用Util汇总;String截取字符串的指定字节长度
1.Util介绍
Util是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理。
Util一般要和私有方法对比:私有方法一般来说是只是在特地场景下使用的,私有方法越多,代码结构越乱。常见的重构策略就是首先从一个很多行数的代码里抽象出若干个私有方法,然后再抽出公用的Util。
如果有可能,尽可能的少用私有方法,而是把他换成一个公用的Util,代表他和业务逻辑是不相关的。通常命名也是ArticleUtil,CommentUtil之类的。
Util一般来说,就是一个明确的输入和一个明确的输出结果。单元测试中,多数也是来测试Util。
积累好自己的Util是一件很重要的事儿。
2.各种实用Util汇总
2.1 String转ArrayList
StringToArrayListUtil.java
import java.util.ArrayList; public class StringToArrayListUtil { public static ArrayList<String> stringToArrayList(String str) { //1.String.substring() 从指定位置开始到指定位置结束截取字符串 String strTemp=str.substring(1,str.length()-1); //2.String.split() 字符串拆分 String[] strResult=strTemp.split(", "); ArrayList<String> resultList=new ArrayList<>(); for (int i = 0; i <strResult.length ; i++) { resultList.add(strResult[i]); } return resultList; } }
2.2 利用InputStream和FileOutputStream实现文件读写(文件的拷贝功能)
import java.io.*; public class FileUtils { public static void main(String[] args) { inputStreamReader(); } public static void inputStreamReader() { //1.创建输入流对象,将流理解为一只笔,输入流为读取数据,输出流为写数据 InputStream inputStream = null; FileOutputStream fos=null; try { //2.实例化输入流对象 inputStream = new FileInputStream("E:\\javaProject\\javaSEProject\\UtilSummary\\res\\novel.txt"); //3.将读取的内容写入指定的文件夹的文件中 //4.定义输出流的目标文件 File file=new File("E:\\javaProject\\javaSEProject\\UtilSummary\\res\\novel_copy1.txt"); //5.实例化输出流对象 fos = new FileOutputStream(file); //6.指定每次读取文件的大小 byte[] bs = new byte[1024]; int temp=-1; while ((temp=inputStream.read(bs))!=-1){ //7,向指定目标文件写数据 fos.write(bs,0,temp); } } catch (Exception e) { e.printStackTrace(); }finally { try { //8.inputStream、fos不为空,则关闭文件流 if (inputStream != null&&fos!=null) { inputStream.close(); fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
2.3 String截取字符串的指定字节长度
package com.ttbank.flep.util; import java.io.UnsupportedEncodingException; import java.util.Arrays; /** * @Author lucky * @Date 2022/8/4 10:06 */ public class StringSubUtils { public static String subStringByBytes(String str,int bengin,int end){ String newStr=""; try { //按指定的编码获取字节数组 byte[] bytes = str.getBytes("GBK"); //按指定的长度截取新的字符数组 byte[] newBytes = Arrays.copyOfRange(bytes,bengin,end); //将新的字符数组转化为字符串 newStr = new String(newBytes,"GBK"); }catch (UnsupportedEncodingException e){ System.out.println("——————字符转码异常——————"); } return newStr.trim(); } }
测试案例:
public class Test05 { public static void main(String[] args) { String str ="2022080393730840 全球3新股及流动性 机会8号"; String s = StringSubUtils.subStringByBytes(str, 0, 20); String s2 = StringSubUtils.subStringByBytes(str, 20, 40); String s3 = StringSubUtils.subStringByBytes(str, 40, 50); System.out.println(s); System.out.println(s2); System.out.println(s3); } }
控制台输出:
2.4 读取json文件,返回json串
import com.alibaba.fastjson.JSONObject; import java.io.*; import java.util.HashMap; import java.util.Map; public class JsonUtil { /** * 读取json文件,返回json串 * @param fileName * @return */ public static String readJsonFile(String fileName) { String jsonStr = ""; try { File jsonFile = new File(fileName); FileReader fileReader = new FileReader(jsonFile); Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8"); int ch = 0; StringBuffer sb = new StringBuffer(); while ((ch = reader.read()) != -1) { sb.append((char) ch); } fileReader.close(); reader.close(); jsonStr = sb.toString(); return jsonStr; } catch (IOException e) { e.printStackTrace(); return null; } } public static void main(String[] args) { //注意:所要读取的文件路径为res/categories.json String jsonStr = JsonUtil.readJsonFile("C:\\jsonfile\\categories.json"); JSONObject jsonObject = new JSONObject(); Map<String, String> params = new HashMap<>(); params.put("Result", jsonStr); jsonObject.put("params", params); System.out.println(jsonObject.toString()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)