关键词:
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模块管理机制... 查看详情