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,史上最全的主要内容,如果未能解决你的问题,请参考以下文章
MappedByteBuffer 详解(图解+秒懂+史上最全)