Java知识点详解 9,史上最全

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java知识点详解 9,史上最全相关的知识,希望对你有一定的参考价值。

    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核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

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

以上是关于Java知识点详解 9,史上最全的主要内容,如果未能解决你的问题,请参考以下文章

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

MappedByteBuffer 详解(图解+秒懂+史上最全)

史上最全python面试题详解(附带详细答案(持续更新))

我愿称之为史上最全的深度学习面经总结(附答案详解)

深入Java微服务之网关系列4: SpringCloud gateway详解(史上最全)

深入Java微服务之网关系列4: SpringCloud gateway详解(史上最全)