//文件里面就 abc efg hi
fileInputStream = new FileInputStream(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\tempfile”);
//准备数组
byte[] bytes = new byte[4];
int readCount = 0;
//循环读
while ((readCount =fileInputStream.read(bytes)) != -1){
System.out.print(new String(bytes,0,readCount));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fileInputStream != null){
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
- InputStream的两种常用方法
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*
-
FileInputStream类其他的常用方法
-
int available() : 返回流当中剩余的没有读到的字节数量
long skip(long n) :跳过几个字节不读
*/
public class FileInputStreamTest05 {
public static void main(String[] args) {
FileInputStream fileInputStream = null;
try {
//创建输入流
fileInputStream = new FileInputStream(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\tempfile”);
/*
//int available() : 返回流当中剩余的没有读到的字节数量
System.out.println(fileInputStream.available());//10
//读一个字节
System.out.println(fileInputStream.read());//97
//再返回一次还有多少没读
System.out.println(fileInputStream.available());//9
*/
//int available() 有什么用?
//不需要循环了
//可以一次读完所有字节
/*byte[] bytes = new byte[fileInputStream.available()];
int readCount = fileInputStream.read(bytes);
System.out.println(new String(bytes,0,readCount));//abc efg hi*/
//long skip(long n) :跳过几个字节不读
//跳过四个
fileInputStream.skip(4); //abc和空格 efg空格 hi
System.out.println(fileInputStream.read());//101 是e
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(fileInputStream != null){
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.2 java.io.FileOutputStream(掌握)
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
-
文件字节输入流,负责写
-
从内存到硬盘
*/
public class FileOutputStreamTest01 {
public static void main(String[] args) {
FileOutputStream fileOutputStream =null;
try {
//如果文件不存在会新建
//这种构造方式会将原文件清空再重新写出
//fileOutputStream =new FileOutputStream(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\temp”);
//以追加的方式在文件末写入,不会清空原文件
fileOutputStream = new FileOutputStream(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\temp”,true);
//输出流文件,最后一定要刷新
fileOutputStream.flush();
//开始写
//将byte数组全部写出
byte[] bytes = {97,98,99,100};
fileOutputStream.write(bytes);
//这样可以在后面再加 ab
//将byte数组一部分写出
fileOutputStream.write(bytes,0,2);
//以字符串的形式写
String string = “钢铁侠,美国队长,雷神”;
//将String类型变成byte数组
bytes = string.getBytes();
//写入
fileOutputStream.write(bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fileOutputStream != null){
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.3 使用FileInputStream和FileOutputStream完成文件的拷贝
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
-
使用FileInputStream和FileOutputStream完成文件的拷贝
-
拷贝的过程应该是一遍读,一边写
-
使用以上的字节流拷贝文件的时候,文件类型随意,万能的,什么样的文件都能拷
-
*/
public class Copy01 {
public static void main(String[] args) {
FileInputStream fileInputStream =null;
FileOutputStream fileOutputStream =null;
try {
fileInputStream = new FileInputStream(“C:\Users\A556U\Desktop\Java核心技术 卷2 高级特性 原书第10版.pdf”);
fileOutputStream =new FileOutputStream(“D:\Java核心技术 卷2 高级特性 原书第10版.pdf”);
int readCont = 0;
byte[] bytes = new byte[1024*1024];//一次最多拷1M
//最主要:一边读一边写
while((readCont = fileInputStream.read(bytes)) != -1){
//fileOutputStream.write(bytes);这样最后一部分可能有重复的
fileOutputStream.write(bytes,0,readCont);
}
//有输出流最后要刷新
fileOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//分开关闭,否则一个出错会影响另一个关闭
if (fileInputStream != null){
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream != null){
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.4 java.io.FileReader
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
-
FileReader:
-
文件字符输入流,只能读取普通文本
-
读取文本文件的时候,比较方便,快捷
-
*/
public class FileReaderTest {
public static void main(String[] args) {
FileReader fileReader =null;
try {
//创建一个文件字符输入流
fileReader = new FileReader(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\temp”);
//创建一个char数组
/*
char[] chars = new char[4];//一次读取四个字符
int readCount = 0;
while((readCount = fileReader.read(chars)) != -1){
System.out.println(new String(chars,0,readCount));
}
*/
//或者这样读
//创建一个char数组
char[] chars = new char[30];//一次读完
fileReader.read(chars);
for(char c : chars){
System.out.println©;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if (fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.5 java.io.FileWriter
import java.io.FileWriter;
import java.io.IOException;
/*
*FileWrite:
-
文件字符输出流
-
只能输出普通文本
*/
public class FileWriterTest {
public static void main(String[] args) {
FileWriter fileWriter =null;
try {
//创建文件字符输出对象
fileWriter = new FileWriter(“C:\Users\A556U\JavaSE曹鹏\chapter23 IO流\src\caopeng\javase\test\temp”,true);
//创建char数组
char[] chars = {‘钢’,‘铁’,‘侠’,‘雷’,‘神’,‘美’,‘国’,‘队’,‘长’};
//全部写入
fileWriter.write(chars);
//部分写入
fileWriter.write(chars,0,3);
//直接写入字符串
fileWriter.write(“钢铁侠好帅”);
//换行
fileWriter.write(“\n”);
//继续写
fileWriter.write(“雷神也好帅”);
//输出流最后一定要刷新!!!
fileWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fileWriter != null){
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.6 使用FileReader FileWriter 进行拷贝
//使用FileReader FileWriter 进行拷贝,只能拷贝“普通文本”文件
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Copy02 {
public static void main(String[] args) {
FileReader fileReader =null;
FileWriter fileWriter =null;
try {
fileReader = new FileReader(“C:\Users\A556U\Desktop\java笔记\day19课堂笔记.txt”);
fileWriter = new FileWriter(“D:\day19课堂笔记.txt”);
int readCount = 0;
char[] chars =new char[1024 * 1024];//一次读1M
while((readCount = fileReader.read(chars)) != -1){
fileWriter.write(chars,0,readCount);
}
//刷新!!!
fileWriter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fileWriter != null){
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
3.1 java.io.InputStreamReader
import java.io.*;
//BufferedReader 的构造方法只能传字符流,不能传字节流
//那么我们可以把字节流变成字符流
public class BufferedReaderTest02 {
public static void main(String[] args) {
BufferedReader bufferedReader =null;
try {
/*//创建一个字节流
FileInputStream fileInputStream = new FileInputStream(“D:\day25课堂笔记.txt”);
//通过 转化流 转成 字符流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//创建带缓冲区的字符输入流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);*/
//合并
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(“D:\day25课堂笔记.txt”)));
//读
String s =null;
while ((s = bufferedReader.readLine()) != null){
System.out.println(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
3.2 java.io.OutputStreamWriter
这个是将字节输出流转化成字符输出流,与上面的类似
4.1 java.io.BufferedReader
/*
-
BufferedReader:
-
带有缓冲区的字符输入流
-
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderTest01 {
public static void main(String[] args) {
BufferedReader bufferedReader = null;
try {
//BufferedReader的构造方法需要流
//当一个流的构造方法中需要流的时候,被传进来的流叫做:节点流
//外部负责包装这个流,叫做:包装流,或者叫 处理流
FileReader fileReader = new FileReader(“D:\day25课堂笔记.txt”);
//这里 bufferedReader 是包装流 FileReader是节点流
bufferedReader = new BufferedReader(fileReader);
/*String firstLine = bufferedReader.readLine();
System.out.println(firstLine);*/
//循环读
String s = null;
while((s = bufferedReader.readLine()) != null){
System.out.println(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
//只要关闭包装流,节点流会自动关闭
if (bufferedReader != null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
4.2 java.io.BufferedWriter
/*
-
BufferedReader:
-
带有缓冲区的字符输入流
-
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲
*/
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterTest01 {
public static void main(String[] args) {
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter(“D:\day25课堂笔记.txt”,true));
//写
bufferedWriter.write(“钢铁侠,蜘蛛侠”);
//换行
bufferedWriter.write(“\n”);
bufferedWriter.write(“美队,雷神”);
//输出流要刷新
bufferedWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (bufferedWriter != null){
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后总结
ActiveMQ+Kafka+RabbitMQ学习笔记PDF
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
0726229)]
[外链图片转存中…(img-5apTruDI-1712680726229)]
[外链图片转存中…(img-Uur38zHC-1712680726230)]
[外链图片转存中…(img-kHLLSMyk-1712680726230)]
[外链图片转存中…(img-ehLHQJqH-1712680726230)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-bSfoZ1a2-1712680726231)]
最后总结
ActiveMQ+Kafka+RabbitMQ学习笔记PDF
[外链图片转存中…(img-kbtQwzto-1712680726231)]
[外链图片转存中…(img-MoloJpRs-1712680726231)]
[外链图片转存中…(img-0BgAOs9L-1712680726232)]
[外链图片转存中…(img-UuTce1qa-1712680726232)]
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-L5WV3vO4-1712680726232)]