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());
    }

}

 

 

 



posted @ 2019-04-16 10:03  雨后观山色  阅读(1085)  评论(0编辑  收藏  举报