List Map FastJson Stream IO 使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、List使用

package com.ycy.collect;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.StringUtils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;


//  list
public class CollectList {
    // 数据初始化
    // 方式1  该方式初始化的集合元素不可改变
    List<Integer> integers = Arrays.asList(1, 3, 4, 5, 6);
    // 方式2
    List<Integer> integers2 = new ArrayList<Integer>() {{
        add(1);
        add(2);
        add(3);
    }};
    // 方式3
    List<Integer> integers3 = new ArrayList();

    // 方式4
    ArrayList<Integer> integers4 = new ArrayList<>(Collections.nCopies(5, 3));

    // 方式5
    List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));


    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test7();
        test8();
    }


    public static void test1() {
        // 如果使用这种方式初始化会报错
//        List<String> aList = Arrays.asList("A", "B", "C", "D");
//        List<String> bList = Arrays.asList("C", "D", "E", "F");
        List<String> listA = new ArrayList<String>();
        List<String> listB = new ArrayList<String>();
        listA.add("A");
        listA.add("B");
        listA.add("C");
        listA.add("D");
        listB.add("C");
        listB.add("D");
        listB.add("E");
        listB.add("F");
        //交集
        listA.retainAll(listB);
        System.out.println(listA);
    }

    public static void test2() {
        List<String> aList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
        List<String> bList = new ArrayList<>(Arrays.asList("C", "D", "E", "F"));
        //差集
        aList.removeAll(bList);
        System.out.println(aList);
    }

    public static void test3() {
        List<String> aList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
        List<String> bList = new ArrayList<>(Arrays.asList("C", "D", "E", "F"));
        //并集
        aList.removeAll(bList);
        aList.addAll(bList);
        System.out.println(aList);
    }

    public static void test4() {
        // 异或 = 并集- 交集
        List<String> aList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
        List<String> bList = new ArrayList<>(Arrays.asList("C", "D", "E", "F"));
        // 交集
        List cList = new ArrayList(aList);
        cList.retainAll(bList);
        // 并集
        aList.removeAll(bList);
        aList.addAll(bList);
        // 并集 - 交集
        aList.removeAll(cList);
        System.out.println(aList);
    }

    // 对象集合处理  方式一 重写对象的 equals 和 hashcode 方法
    public static void test5() {
        List<User> users1 = new ArrayList<>();
        List<User> users2 = new ArrayList<>();

        for (int i = 1; i < 5; i++) {
            User user = new User();
            user.setId(i + "");
            user.setName("tom" + i);
            users1.add(user);
        }
        for (int i = 3; i < 7; i++) {
            User user = new User();
            user.setId(i + "");
            user.setName("tom" + i);
            users2.add(user);
        }

        // 交集
        users1.retainAll(users2);
        for (User user : users1) {
            System.out.println(user.toString());
        }
    }

    // 对象集合处理  方式二 使用唯一键比较
    public static void test7() {
        List<User2> users1 = new ArrayList<>();
        List<User2> users2 = new ArrayList<>();

        for (int i = 1; i < 5; i++) {
            User2 user = new User2();
            user.setId(i + "");
            user.setName("tom" + i);
            user.setDistinctKey(i + "tom" + i);
            users1.add(user);
        }
        for (int i = 3; i < 7; i++) {
            User2 user = new User2();
            user.setId(i + "");
            user.setName("tom" + i);
            user.setDistinctKey(i + "tom" + i);
            users2.add(user);
        }
        // 取并集 去重
        users1.addAll(users2);
        List<User2> collect = users1.stream().filter(distinctByKey(User2::getDistinctKey)).collect(Collectors.toList());
        for (User2 user2 : collect) {
            System.out.println(user2);
        }
    }


    // 遍历list
    public static void test8(){
        List<User2> users1 = new ArrayList<>();
        for (int i = 1; i < 5; i++) {
            User2 user = new User2();
            user.setId(i + "");
            user.setName("tom" + i);
            user.setDistinctKey(i + "tom" + i);
            users1.add(user);
        }
        // 增强for
        for (User2 user2 : users1) {
            System.out.println(user2);
        }
        // 普通for循环
        for (int i= 0;i<users1.size();i++){
            System.out.println(users1.get(i));
        }

        // 转数组
        Object[] objects = users1.toArray();
        for (Object object : objects) {
            System.out.println(object);
        }

        // 迭代器  通过迭代器遍历时可以删除集合中的元素
        Iterator iterator = users1.iterator();
        while(iterator.hasNext()) {
            Object next = iterator.next();
            Object name = getFieldValueByName("name", next);
            if (!StringUtils.isEmpty(name) && name.equals("tom2")){
                iterator.remove();
                continue;
            }
            System.out.println(iterator.next());
        }
    }


    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Set<Object> seen = ConcurrentHashMap.newKeySet();
        return t -> seen.add(keyExtractor.apply(t));
    }

    private static Object getFieldValueByName(String fieldName, Object o) {
        try {
            String firstLetter = fieldName.substring(0, 1).toUpperCase();
            String getter = "get" + firstLetter + fieldName.substring(1);
            Method method = o.getClass().getMethod(getter, new Class[]{});
            Object value = method.invoke(o, new Object[]{});
            return value;
        } catch (Exception e) {
            return null;
        }
    }

    public void setFieldValueByName(Object obj, String fieldName, Object value) {
        try {
            // 获取obj类的字节文件对象
            Class c = obj.getClass();
            // 获取该类的成员变量
            Field f = c.getDeclaredField(fieldName);
            // 取消语言访问检查
            f.setAccessible(true);
            // 给变量赋值
            f.set(obj, value);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }


}

@Data
@AllArgsConstructor
@NoArgsConstructor
class User {
    private String id;
    private String name;

    @Override
    public boolean equals(Object obj) {
        User u = (User) obj;
        return id.equals(u.getId()) && name.equals(u.getName());
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}

@Data
@AllArgsConstructor
@NoArgsConstructor
class User2 {
    private String id;
    private String name;
    private String distinctKey;

    public User2(String id, String name) {
        this.id = id;
        this.name = name;
    }
}


二、Map 使用

package com.ycy.collect;


import com.google.common.collect.ImmutableMap;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;

public class CollectMap {
    // map初始化 方式一
    Map<String,String> map1 = new HashMap<>();
    // 方式二
    Map<String,String > map2 = new HashMap<String, String>(){{
        put("1","tom");
        put("2","jerry");
    }};
    // 方式三
    Map<String, Integer> myMap = ImmutableMap.of("a", 1, "b", 2, "c", 3);

    public static void main(String[] args) {
//        test1();
        test2();
    }


    // map常用方法
    public static void test1(){
        Map<String,String> map = new HashMap();
        // 添加元素
        map.put("name","tom");
        map.put("age","12");
        // 获取对应的值
        map.get("name");
        map.getOrDefault("hahaha","default");
        // 判断是否存在指定的映射
        boolean name = map.containsKey("name");
        // 判断是否存在指定值的映射
        boolean b = map.containsValue("12");
        // 删除元素
        map.remove("age");
        // 返回所有值
        Collection<String> values = map.values();
        // 获取所有key
        Set<String> strings = map.keySet();
        // 返回map大小
        int size = map.size();
        // 清空map
        map.clear();
    }

    // 便利 map
    public static void test2(){
        Map<String,String> map = new HashMap();
        map.put("name","tom");
        map.put("age","12");
        map.put("sex","男");
        map.put("weight","50");

        // 方式一  foreach + lambda 表达式
        map.forEach((k,v)->{
            System.out.println(k+":"+v);
        });

        System.out.println("===================");

        // 方式二 entrySet + 迭代器
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String, String> next = iterator.next();
            System.out.println(next.getKey()+":"+next.getValue());
        }
        System.out.println("===================");

        // 方式三 entrySet + foreach
        for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {
            System.out.println(stringStringEntry.getKey()+":"+stringStringEntry.getValue());
        }
        System.out.println("===================");

        // 方式四  keySet + 迭代器
        Set<String> strings = map.keySet();
        Iterator<String> iterator1 = strings.iterator();
        while (iterator1.hasNext()){
            String next = iterator1.next();
            System.out.println(next+":"+map.get(next));
        }
        System.out.println("===================");

        // 方式四  keySet + foreach
        Set<String> strings1 = map.keySet();
        for (String key : strings1) {
            System.out.println(key+":"+map.get(key));
        }

    }


    private static Object getFieldValueByName(String fieldName, Object o) {
        try {
            String firstLetter = fieldName.substring(0, 1).toUpperCase();
            String getter = "get" + firstLetter + fieldName.substring(1);
            Method method = o.getClass().getMethod(getter, new Class[]{});
            Object value = method.invoke(o, new Object[]{});
            return value;
        } catch (Exception e) {
            return null;
        }
    }

    public void setFieldValueByName(Object obj, String fieldName, Object value) {
        try {
            // 获取obj类的字节文件对象
            Class c = obj.getClass();
            // 获取该类的成员变量
            Field f = c.getDeclaredField(fieldName);
            // 取消语言访问检查
            f.setAccessible(true);
            // 给变量赋值
            f.set(obj, value);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

三 Stream 流使用

package com.ycy.stream;

import com.mysql.cj.util.StringUtils;
import com.sun.org.apache.bcel.internal.generic.NEW;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.util.StringUtil;

import java.lang.reflect.Array;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
 * @author: luck
 * @date: 2024/2/21 11:12
 * @Description:
 */
public class Stream {
    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test7();
//        test8();
//        test9();
//        test11();
//        test12();
        test13();
    }


    // 过滤
    public static void test1() {
        Arrays.asList(1, 2, 3, 4, 5).stream().filter(x -> x - 3 > 0).forEach(System.out::println);
    }

    // 使用map过滤
    public static void test2() {
        Arrays.asList(1, 2, 3, 4, 5).stream().map(x -> "Hello" + x).forEach(System.out::println);
    }

    // forEach
    public static void test3() {
        Arrays.asList(1, 2, 3, 4, 5).stream().map(x -> Arrays.asList(x, x)).forEach(System.out::println);
    }

    public static void test4() {
        Arrays.asList("1", "2", "3").stream().mapToDouble(Double::parseDouble).forEach(System.out::println);
    }

    public static void test5() {
        // 相当于二维数组
        final List<List<String>> lists = Arrays.asList(
                Arrays.asList("Hello World !!!", "I am Tom", "How are you doing?"),
                Arrays.asList("1", "2", "3"),
                Arrays.asList("你好世界!!!", "我是tom", "你正在做什么?")
        );
        lists.stream().flatMap(x -> x.stream()).forEach(System.out::println);
        lists.stream().map(x -> x.stream()).forEach(System.out::println);
    }

    // 去重
    public static void test6() {
        Arrays.asList(1, 2, 5, 6, 8, 3, 6).stream().distinct().forEach(System.out::println);
    }

    // 排序
    public static void test7() {
        Arrays.asList("21", "25", "54", "12", "33").stream().sorted(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return Integer.parseInt(o1) - Integer.parseInt(o2);
            }
        }).forEach(System.out::println);
    }

    // 对象排序
    public static void test11() {
        List<User> userList = new ArrayList<>();
        for (int i = 1; i < 6; i++) {
            User user = new User();
            user.setName("tom" + i);
            user.setAge(i);
            user.setSex(i % 2 == 0 ? "男" : "女");
            userList.add(user);
        }
        User user1 = new User();
        userList.add(new User("kk", "男", 12));
        userList.add(new User(null, "男", 8));
        // 排序  姓名升序 姓名为null认为排下 年龄降序
        List<User> collect = userList.stream().sorted(
                Comparator.comparing(User::getName, Comparator.nullsLast(String::compareTo))
                        .thenComparing(User::getAge, Comparator.nullsLast(Integer::compareTo).reversed())
        ).collect(Collectors.toList());
        for (User user : collect) {
            System.out.println(user.toString());
        }
    }

    // 对象过滤
    public static void test12() {
        List<User> userList = new ArrayList<>();
        for (int i = 1; i < 6; i++) {
            User user = new User();
            user.setName("tom" + i);
            user.setAge(i);
            user.setSex(i % 2 == 0 ? "男" : "女");
            userList.add(user);
        }
        List<User> collect = userList.stream().filter(
                d -> !StringUtil.isEmpty(d.getName())
                        && d.getAge() > 3
                        && d.getSex().equals("男")
        ).collect(Collectors.toList());

        for (User user : collect) {
            System.out.println(user);
        }
    }

    // 对象去重
    public static void test13(){
        List<User> userList = new ArrayList<>();
        for (int i = 1; i < 8; i++) {
            User user = new User();
            user.setName("tom" + i);
            user.setAge(i);
            user.setSex(i % 2 == 0 ? "男" : "女");
            userList.add(user);
        }
        User user1 = new User();
        user1.setName("tom2");
        user1.setAge(2);
        userList.add(user1);
        System.out.println("去重前");
        for (User user : userList) {
            System.out.println(user.toString());
        }
        for (User user : userList) {
            user.setDistinctKey(user.getName()+user.getAge());
        }
        List<User> collect = userList.stream().filter(distinctByKey(User::getDistinctKey)).collect(Collectors.toList());
        System.out.println("去重后");
        for (User user : collect) {
            System.out.println(user.toString());
        }
    }

    // 转 map
    public static void test8() {
        final ArrayList<User> users = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            users.add(User.builder().name(String.valueOf(i)).sex("男").age(11).build());
        }

        Map<String, Integer> collect = users.stream().collect(Collectors.toMap(k -> k.getName(), v -> v.getAge()));
        collect.forEach((k, v) -> {
            System.out.println(k + ":" + v);
        });
    }

    public static void test20() {
        final ArrayList<User> users = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            users.add(User.builder().name(String.valueOf(i)).sex("男").age(11).build());
        }

        // 当存在重复数据时,保留第一个元素
        Map<String, Integer> collect = users.stream().collect(Collectors.toMap(User::getName,User::getAge,(value1, value2) -> value1));
        collect.forEach((k, v) -> {
            System.out.println(k + ":" + v);
        });
    }


    // 分组
    public static void test9() {
        // 按照年龄进行分组,得到一个Map
        final Map<Integer, List<UserOnlyAge>> collect = Arrays.asList(
                UserOnlyAge.builder().age(1).build(),
                UserOnlyAge.builder().age(2).build(),
                UserOnlyAge.builder().age(1).build(),
                UserOnlyAge.builder().age(2).build(),
                UserOnlyAge.builder().age(5).build()
        ).stream().collect(Collectors.groupingBy(UserOnlyAge::getAge));

        collect.forEach((k, v) -> {
            System.out.println(k);
            for (UserOnlyAge userOnlyAge : v) {
                System.out.println(userOnlyAge.getAge());
            }
        });
    }

    //
    public static void test10() {
        IntStream.rangeClosed(1, 10).forEach(System.out::println);
        IntStream.rangeClosed(1, 10).limit(4).forEach(System.out::println);
        IntStream.rangeClosed(1, 10).skip(2).limit(4).forEach(System.out::println);
    }

    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Set<Object> seen = ConcurrentHashMap.newKeySet();
        return t -> seen.add(keyExtractor.apply(t));
    }


}

@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
class User {
    private String name;
    private String sex;
    private int age;
    private String distinctKey;

    public User(String name, String sex, int age) {
        this.name =name;
        this.age = age;
        this.sex = sex;
    }
}

@Data
@Builder
class UserOnlyAge {
    int age;
}


四 fastJson 使用

  1. 依赖
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.47</version>
        </dependency>

package com.ycy.collect;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.CollectionUtils;

import java.util.*;

public class FastJson {

    // json数据
    static String userJson = "{\n" +
            "\"name\":\"tom\",\n" +
            "\"age\":16,\n" +
            "\"sex\":\"男\"\n" +
            "}";

    static String userJsonList = "[\n" +
            "{\n" +
            "\"name\":\"tom\",\n" +
            "\"age\":16,\n" +
            "\"sex\":\"男\"\n" +
            "},{\n" +
            "\"name\":\"jerry\",\n" +
            "\"age\":15,\n" +
            "\"sex\":\"女\"\n" +
            "}\n" +
            "]";

    static String userObject = "{\n" +
            "    \"1\": {\n" +
            "        \"age\": 15,\n" +
            "        \"name\": \"tom\",\n" +
            "        \"sex\": \"男\"\n" +
            "    },\n" +
            "    \"2\": {\n" +
            "        \"age\": 16,\n" +
            "        \"name\": \"jerry\",\n" +
            "        \"sex\": \"男\"\n" +
            "    }\n" +
            "}";

    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test6();
//        test7();
//        test8();
//        test9();
        test10();
    }


    // fastJson 常用方法
    // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
    public static void test1(){
        Object object = JSON.parse(userJson);
        System.out.println(object.toString());
    }

    // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
    public static void test2(){
        JSONObject jsonObject = JSON.parseObject(userJson);
        System.out.println(jsonObject.toString());
        // jsonObject
        jsonObject.put("name","hani");
        jsonObject.put("sex","女");
        System.out.println(jsonObject);
    }

    // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
    public static void test3(){
        User3 user3 = JSON.parseObject(userJson, User3.class);
        System.out.println(user3.toString());
    }

    //  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
    public static void test4(){
        JSONArray objects = JSON.parseArray(userJsonList);
        if (!CollectionUtils.isEmpty(objects)){
            for (Object object : objects) {
                System.out.println(object.toString());
            }
        }
    }

    // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
    public static void test5(){
        List<User3> user3s = JSON.parseArray(userJsonList, User3.class);
        if (!CollectionUtils.isEmpty(user3s)){
            for (User3 user3 : user3s) {
                System.out.println(user3.toString());
            }
        }
    }

    // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
    // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
    public static void test6(){
        List<User3> user3s = new ArrayList<>();
        for (int i =1;i<4;i++){
            User3 user3 = new User3("tom"+i,15,"男");
            user3s.add(user3);
        }

        String s = JSON.toJSONString(user3s);
        String s1  = JSON.toJSONString(user3s,true);
        String s2  = JSON.toJSONString(user3s,false);
        System.out.println(s);
        System.out.println(s1);
        System.out.println(s2);
    }

    // public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
    public static void test7(){
        List<User3> user3s = new ArrayList<>();
        for (int i =1;i<4;i++){
            User3 user3 = new User3("tom"+i,15,"男");
            user3s.add(user3);
        }
        Object o = JSON.toJSON(user3s);
        System.out.println(o.toString());

    }

    // 操作json对象
    public static void test8(){
        JSONObject jsonObject = JSON.parseObject(userJson);
        // 获取  jsonObject 属性
        Object name = jsonObject.get("name");
        Integer age = jsonObject.getInteger("age");
        String sex = jsonObject.getString("sex");
        System.out.println(name+":"+age+":"+sex);

        // 设置 jsonObject 属性
        jsonObject.put("name","jerry");
        jsonObject.put("age",15);
        jsonObject.put("sex","女");
        System.out.println(jsonObject.toString());

    }

    // jsonArray 与 list 的项目转换
    public static void test9(){
        // jsonArray 转 list
        JSONArray objects = JSON.parseArray(userJsonList);
        List<User3> user3s = objects.toJavaList(User3.class);
        if (!CollectionUtils.isEmpty(user3s)){
            for (User3 user3 : user3s) {
                System.out.println(user3.toString());
            }
        }

        // list 转 jsonArray  现转为 string 再转为 jsONArray
        List<User3> user3list = new ArrayList<>();
        for (int i =1;i<4;i++){
            User3 user3 = new User3("tom"+i,15,"男");
            user3list.add(user3);
        }
        JSONArray objects1 = JSON.parseArray(JSON.toJSONString(user3list));
        if (!CollectionUtils.isEmpty(objects1)){
            for (Object o : objects1) {
                System.out.println(o.toString());
            }
        }

    }
    // jsonObject 与 map 的项目转换
    public static void test10(){
       // sonObject 转 map
        JSONObject jsonObject = JSON.parseObject(userObject);
        Map<String, Object> innerMap = jsonObject.getInnerMap();
        Set<String> keys = innerMap.keySet();
        Iterator<String> iterator = keys.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next()+":"+innerMap.get(iterator.next()).toString());
        }

        for (String key : keys) {
            System.out.println(key+":"+innerMap.get(key));
        }

        // map 转 jsonObject
        Map<String,User3> user3Map = new HashMap<>();
        for (int i =1;i<4;i++){
            User3 user3 = new User3("tom" + i, 15, "男");
            user3Map.put(""+i,user3);
        }
        JSONObject jsonObject1 = JSON.parseObject(JSON.toJSONString(user3Map));
        System.out.println(jsonObject1);
    }
    
    // jsonArray 使用 stream 流
    public static void test11(){
        JSONArray objects = JSON.parseArray(userJsonList);
        Map<String, Object> userMap = objects.stream().collect(Collectors.toMap(item -> ((JSONObject) item).getString("name"), item -> item, (key1, key2) -> key1));
        Set<String> keySet = userMap.keySet();
        for (String key : keySet) {
            System.out.println(userMap.get(key).toString());
        }
    }



}

@AllArgsConstructor
@NoArgsConstructor
@Data
class User3{
    private String name;
    private Integer age;
    private String sex;

}

io流

1 文件

package com.ycy.io;



import java.io.*;

public class FileIo {
    public static void main(String[] args) throws IOException {
//        createFile();
//        test();
        test2();
    }

    // 创建文件
    public static void createFile() throws IOException {
        File file = new File("D:\\My\\fileTest.txt");
        if (!file.exists()){
            file.createNewFile();
        }
        System.out.println(file.length());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getAbsoluteFile());
        file.delete();

    }

    // 练习 创建一个文件 写入数据,再读出数据
    public static void test() throws IOException {
        // 添加文件
        File file = new File("D:\\My\\fileTest.txt");
        try {
            file.createNewFile();
        }catch (IOException e){
            e.printStackTrace();
        }

        // 使用字节流写入文件
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(file);
            java.lang.String str = "无言独上西楼 月如钩 寂寞梧桐深院锁清秋";
            fileOutputStream.write(str.getBytes());
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (null != fileOutputStream){
                fileOutputStream.close();
            }
        }

        // 读取文件
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(file);
            byte[] bytes = new byte[1024];
            int length = 0;
            StringBuffer stringBuffer = new StringBuffer();
            while ((length=fileInputStream.read(bytes))!= -1){
                stringBuffer.append(new java.lang.String(bytes,0,length));
            }
            System.out.println(stringBuffer.toString());
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (null != fileInputStream){
                fileInputStream.close();
            }
        }
        file.delete();
    }

    // 测试使用字符流读取文件
    public static void test2() throws IOException {
        // 添加文件
        File file = new File("D:\\My\\fileTest.txt");
        try {
            if (!file.exists()){
                file.createNewFile();
            }
        }catch (IOException e){
            e.printStackTrace();
        }

        // 字符流写文件
        OutputStreamWriter writer = null;
        try {
            writer = new OutputStreamWriter(new FileOutputStream(file,true),"UTF8");
            String str = "无言独上西楼 月如钩 寂寞梧桐深院锁清秋";
            writer.write(str);
//            writer.write(str,0,5);
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (null != writer);
            writer.close();
        }

        // 读文件
        InputStreamReader inputStreamReader = null;
        try {
            inputStreamReader = new InputStreamReader(new FileInputStream(file),"utf8");
            char[] chars = new char[1024];
            StringBuffer stringBuffer = new StringBuffer();
            int length = 0;
            while ((length=inputStreamReader.read(chars))!= -1){
                stringBuffer.append(new String(chars,0,length));
            }
            System.out.println(stringBuffer);
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (null != inputStreamReader){
                inputStreamReader.close();
            }
        }
//        file.delete();
    }

}

2.读写文件

package com.ycy.io;

import java.io.*;

public class BaseIo {

    public static void main(String[] args) throws IOException {
        File file = new File("D:/test.txt");

//        write(file);
//        System.out.println(read(file));

//        bufferedWrite(file);
//        System.out.println(bufferedRead(file));

        writeChar(file);
        System.out.println(readChar(file));

//        fileWriter(file);
//        System.out.println(fileRead(file));
    }

    // 字节流 写数据
    public static void write(File file) throws IOException{
        // 创建字节输入流对象
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        // 定义要输入的文本
        String string = "无言独上西楼,月如钩,寂寞梧桐深院锁清秋";
        // 写入文件
        fileOutputStream.write(string.getBytes());
        // 关闭流
        fileOutputStream.close();
    }

    // 字节流 读数据
    public static String read(File file) throws IOException{
        // 创建字节输入流对象
        FileInputStream fileInputStream = new FileInputStream(file);
        // 一次性取多少个字节
        byte[] bytes = new byte[1024];
        // 存储读取的字节
        StringBuffer stringBuffer = new StringBuffer();
        // 记录读取的字节
        int length = 0;
        while ((length = fileInputStream.read(bytes)) != -1){
            String s = new String(bytes, 0, length);
            stringBuffer.append(new String(bytes,0,length));
        }
        fileInputStream.close();
        return stringBuffer.toString();
    }

    // 字节缓冲流 写数据
    public static void bufferedWrite(File file) throws IOException{
        // 创建字节缓冲流对象
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
        // 定义要输入的文本
        String string = "无言独上西楼,月如钩,寂寞梧桐深院锁清秋";
        // 写入文件
        bufferedOutputStream.write(string.getBytes());
        // 关闭流
        bufferedOutputStream.close();
    }

    // 字节缓冲流 读数据
    public static String bufferedRead(File file) throws IOException{
        // 创建字节缓冲输入流对象
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
        // 一次性取多少个字节
        byte[] bytes = new byte[1024];
        // 存储读取的字节
        StringBuffer stringBuffer = new StringBuffer();
        // 记录读取的字节
        int length = 0;
        while ((length = bufferedInputStream.read(bytes)) != -1){
            String s = new String(bytes, 0, length);
            stringBuffer.append(new String(bytes,0,length));
        }
        bufferedInputStream.close();
        return stringBuffer.toString();
    }

    // 字符输出流
    public static void writeChar(File file) throws IOException{
        // 创建字符输出流对象  new FileOutputStream(file ,true) 构造方法添加 第二个参数为true时,会将
//        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file,true),"UTF-8");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
        // 写入数据
        // 定义要输入的文本
        String string = "无言独上西楼,月如钩,寂寞梧桐深院锁清秋";
        outputStreamWriter.write(string);
        outputStreamWriter.close();
    }

    // 字符输入流
    public static String readChar(File file) throws IOException{
        // 创建字符输出流对象
        InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
        char[] chars = new char[1024];
        StringBuffer stringBuffer = new StringBuffer();
        // 读取到的字符数组长度,为-1时表示没有数据
        int length;
        // 循环取数据
        while ((length = inputStreamReader.read(chars)) != -1) {
            // 将读取的内容转换成字符串
            stringBuffer.append(chars, 0, length);
        }
        // 关闭流
        inputStreamReader.close();
        return stringBuffer.toString();
    }

    // 字符便捷类
    public static void fileWriter(File file) throws IOException {
        FileWriter fileWriter = new FileWriter(file, true);
        String str = "无言独上西楼,月如钩,寂寞梧桐深院锁清秋";
        fileWriter.write(str);
        fileWriter.close();
    }

    public static String fileRead(File file)throws IOException{
        FileReader fileReader = new FileReader(file);
        char[] chars = new char[1024];
        StringBuffer stringBuffer = new StringBuffer();
        int length;
        while ((length = fileReader.read(chars))!= -1){
            stringBuffer.append(chars,0,length);
        }
        fileReader.close();
        return stringBuffer.toString();
    }

}

摘要

file操作

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值