java知识点详解9,史上最全(代码片段)

程序员超时空 程序员超时空     2022-12-19     204

关键词:

    try 

        if(true == b_chinese_file) 

            //测试字节流读取中文乱码问题

            fis = new FileInputStream(ioTest.const_fileChinese);

        else 

            fis = new FileInputStream(ioTest.const_file);

        

        int read = 0;

        while ((read = fis.read())!=-1) 

            log((char)read, false);

        

     catch (FileNotFoundException e) 

        e.printStackTrace();

     catch (IOException e) 

        e.printStackTrace();

     finally 

        if(fis != null) 

            try 

                fis.close();

             catch (IOException e) 

                e.printStackTrace();

            

        

    





/**

 * 字节流读取文件:数组循环读取

 */

private static byte[] test02() 

    IOTest ioTest = new IOTest();

    FileInputStream fis = null;

    int len = 512;

    byte[] buffer = new byte[len];

    try 

        fis = new FileInputStream(ioTest.const_file);

        int read;

        while ((read = fis.read(buffer,0,len)) != -1) 

            log(buffer + "", true, false);

        

        for(byte b : buffer) 

            if(true == Character.isLetterOrDigit((char)b) || (char)b == '\\n') 

                log((char)b, false, false);

            

        

     catch (FileNotFoundException e) 

        return new byte[1];

     catch (IOException e) 

        return new byte[1];

     finally 

        if(fis != null) 

            try 

                fis.close();

             catch (IOException e) 

                e.printStackTrace();

            

        

    

    return buffer;





### 2、字符流读操作



/**

  • 字符流读取中文文档,解决字节流读取中文乱码问题

*/

private static void test03()

IOTest ioTest = new IOTest();

FileReader fr = null;

try 

    fr = new FileReader(ioTest.const_fileChinese);

    int read = 0;

    while ((read = fr.read()) != -1) 

        log((char)read, false);

    

 catch (FileNotFoundException e) 

    e.printStackTrace();

 catch (IOException e) 

    e.printStackTrace();

 finally 

    if(fr != null) 

        try 

            fr.close();

         catch (IOException e) 

            e.printStackTrace();

        

    





### 3、字节流写操作



/**

  • 字节流写操作

  • @throws IOException

  • @throws FileNotFoundException

*/

private static void test04()

String outPath = "D:\\\\guor\\\\data\\\\testNew.txt";

FileOutputStream fos = null;

try 

    File file = new File(outPath);

    byte[] buffer = test02();

    fos = new FileOutputStream(file);

    fos.write(buffer);

 catch (FileNotFoundException e) 

    log("FileNotFoundException: " + e);

 catch (IOException e) 

    log("IOException: " + e);

 finally 

    if(fos != null) 

        try 

            fos.close();

         catch (IOException e) 

            e.printStackTrace();

        

    





### 4、字符流写操作



/**

  • 字符流写操作

  • @throws IOException

  • @throws FileNotFoundException

*/

private static void test05()

String outPath = "D:\\\\guor\\\\data\\\\中文New.txt";

IOTest ioTest = new IOTest();

FileReader fr = null;

FileWriter fw = null;

try 

    fr = new FileReader(ioTest.const_fileChinese);

    StringBuilder sb = new StringBuilder();



    int read = 0;

    while ((read = fr.read()) != -1) 

        log((char)read, false);

        sb.append((char)read);

    



    File file = new File(outPath);

    fw = new FileWriter(file);

    fw.write(sb.toString());

 catch (FileNotFoundException e) 

    log("FileNotFoundException: " + e);

 catch (IOException e) 

    log("IOException: " + e);

 finally 

    if(fw != null) 

        try 

            fw.close();

         catch (IOException e) 

            e.printStackTrace();

        

    

    if(fr != null) 

        try 

            fr.close();

         catch (IOException e) 

            e.printStackTrace();

        

    





### 5、log日志打印



/**

  • @param msg 带输出信息

  • @param b_wrap 是否换行

*/

private static void log(Object msg, boolean b_wrap)

if(true == b_wrap) 

    System.out.println(msg + "");

else 

    System.out.print(msg + "");


/**

  • @param msg

*/

private static void log(Object msg)

log(msg, true, true);

/**

  • @param msg 带输出信息

  • @param b_wrap 是否换行

  • @param out 是否输出

*/

private static void log(Object msg, boolean b_wrap, boolean out)

if(true == out) 

    if(true == b_wrap) 

        System.out.println(msg + "");

    else 

        System.out.print(msg + "");

    





四、多线程方式进行socket文件传送

-------------------



**socket通信时用socket.getOutputStream();获取输入输出流,不是socket通信时用new FileOutPutStream()获取输入输出流。**



### 1、服务端



import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class MyServer

public static void main(String[] args) throws IOException 

    ServerSocket server = new ServerSocket(9999);

    while (true)

        Socket socket = server.accept();

        MyDownload download = new MyDownload(socket);

        Thread thread = new Thread(download);

        thread.start();

    





### 2、服务端Thread



public class MyDownload implements Runnable

private Socket socket;



public MyDownload(Socket socket) 

    this.socket = socket;





@Override

public void run() 

    try

        System.out.println("与客户端连接成功");

        //服务端向客户端发送消息

        OutputStream out = socket.getOutputStream();

        File file = new File("H:\\\\js\\\\jquery-2.1.4.min.js");

        //将此文件从硬盘读到内存中

        InputStream in = new FileInputStream(file);

        //定义每次发送的文件大小

        byte[] bytes = new byte[1000];

        int len = -1;

        while ((len = in.read(bytes)) != -1)

            out.write(bytes,0,len);

        

        in.close();

        out.close();

        socket.close();

    catch (Exception e)

        System.out.println(e);

    





### 3、客户端





# 总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

这些视频如果需要的话,可以无偿分享给大家,**[点击这里即可免费领取](https://gitee.com/vip204888/java-p7)**

     out.write(bytes,0,len);

            

            in.close();

            out.close();

            socket.close();

        catch (Exception e)

            System.out.println(e);

        

    

 

3、客户端

总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

这些视频如果需要的话,可以无偿分享给大家,点击这里即可免费领取

python知识点(史上最全)(代码片段)

Python期末考试知识点(史上最全)python简介Python是一种解释型语言Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行数据类型:整形int无限大浮点型float小数复数complex由实数和虚... 查看详情

史上最全jquery知识点小结(下)(代码片段)

话说上回:史上最全jQuery知识点小结(上)本节案例请移步查看:jQuery-案例欢迎学习交流!!!持续更新中…文章目录2.jQuery常用API2.4jQuery属性操作2.5jQuery内容文本值2.6jQuery元素操作(遍历、创建... 查看详情

深入java微服务之网关系列3:springcloudalibabagateway详解(史上最全)(代码片段)

九、服务网关:Gateway9.1、网关简介    大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微... 查看详情

kafka源码分析10:副本状态机replicastatemachine详解(图解+秒懂+史上最全)(代码片段)

文章很长,建议收藏起来,慢慢读!Java高并发发烧友社群:疯狂创客圈奉上以下珍贵的学习资源:免费赠送经典图书:《Java高并发核心编程(卷1)》面试必备+大厂必备+涨薪必备加尼恩免费领免... 查看详情

史上最全面的springboot配置文件详解(代码片段)

SpringBoot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍。SpringBoot配置文件对SpringBoot来说就是入门和基础,经常会用到,所以写下做个总结以便日后查看。1.配置文件当我们构建完SpringBoot项目后,会... 查看详情

java泛型详解,史上最全图文详解!

noGenericnamesuseGenericnameslistslistlistslistabTabTvaluevalueTgetValuevaluesetValuevaluenamenumbershowshowvalueshowvaluegenericInterfaceg1g2TgenercMethodtmainargsgenericString  strgenericS 查看详情

python二级考试知识点(史上最全)(代码片段)

Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from... 查看详情

史上最全jquery知识点小结(上)(代码片段)

本节案例请移步查看:jQuery-案例欢迎学习交流!!!持续更新中…文章目录1.jQuery概述JavaScript库jQuery概念jQuery的入口函数jQuery的顶级对象$jQuery对象和DOM对象2.jQuery常用API2.1jQuery选择器基础选择器层级选择器筛选选... 查看详情

史上最全echarts可视化图表详解(代码片段)

...配置项包括每一个环节比较容易出现的问题来为大家进行详解。•安装echarts图表•使用echarts图表•echarts图表那些你一定会用到的配 查看详情

史上最全mysql各种锁详解:一文搞懂mysql的各种锁(代码片段)

前言锁在MySQL中是非常重要的一部分,锁对MySQL的数据访问并发有着举足轻重的影响。锁涉及到的知识篇幅也很多,所以要啃完并消化到自己的肚子里,是需要静下心好好反反复复几遍地细细品味。本文是对锁的一个... 查看详情

史上最全的并发编程学习目录

...基本操作3.线程之间的通信wait和notify4.join和yield以及sleep详解5.synchronized关键字讲解6.volatile原理7.线程组8.线程优先级9.守护线程10.ThreadLocal二:JDK并发包1.jdk并发工具类2.jdk并发容器3.jdk并发框架三:Java内存模型Java内存模型的抽象... 查看详情

jmeter之json提取器详解(史上最全)(代码片段)

参考资料:https://www.bbsmax.com/A/D854lmBw5E/Jsonpath在线测试:http://jsonpath.com/实际工作中用到的一些场景:提取某个特定的值提取多个值按条件取值阵列取值(返回所有元素的列表/数组)提取多个值Jsonpath提取器需要另外安装下载plugi... 查看详情

史上最全的maven的pom.xml文件详解(代码片段)

本文转自:https://www.cnblogs.com/hafiz/p/5360195.html原作者:阿豪聊干货<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 查看详情

kafka源码分析9:controller控制器的原理(图解+秒懂+史上最全)(代码片段)

文章很长,建议收藏起来,慢慢读!Java高并发发烧友社群:疯狂创客圈奉上以下珍贵的学习资源:免费赠送经典图书:《Java高并发核心编程(卷1)》面试必备+大厂必备+涨薪必备加尼恩免费领免... 查看详情

史上最全sql基础知识语法(代码片段)

文章目录一、SQL基本介绍二、SQL基础1、SQL基本语法2、SQL库操作1)创建数据库2)显示数据库3)使用数据库4)修改数据库5)删除数据库6)总结3、SQL表(字段)操作1)创建数据表2)显示数据表3)查看数据表4)更改数据表5)更改字段①... 查看详情

bytebuddy(史上最全)(代码片段)

ByteBuddy(史上最全)文章很长,建议收藏起来慢慢读!总目录博客园版为大家准备了更多的好文章!!!!推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,... 查看详情

bytebuddy(史上最全)(代码片段)

ByteBuddy(史上最全)文章很长,建议收藏起来慢慢读!总目录博客园版为大家准备了更多的好文章!!!!推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,... 查看详情

史上最全的go语言模块(module)管理详解(基于go1.19)(代码片段)

  目录1.使用gomodules方式管理Go模块2.使用工作区管理Go模块3.设置全局模块名4.在VSCode中使用工作区模式管理Go模块   go语言一直到1.10,都是使用GOPATH设置模块搜索路径,但从1.11开始,引入了新的Go模块管理机制࿰... 查看详情