最后
我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?
既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?
架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
文件和目录操作
创建与删除
| 返回值 | 方法 | 描述 |
| — | — | — |
| boolean | createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件;存在时,则创建失败 |
import java.io.File;
import java.io.IOException;
/**
*/
public class CreateAndDelete {
public static void main(String[] args) throws IOException {
File file1 = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/2.txt”);
if (file1.createNewFile()) {
System.out.println(“创建文件成功”);
} else {
System.out.println(“创建文件失败”);
}
if (file1.delete()) {
System.out.println(“删除文件成功”);
} else {
System.out.println(“删除文件失败”);
}
File file2 = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/demo”);
if (file2.mkdir()) {
System.out.println(“创建文件夹成功”);
} else {
System.out.println(“创建文件夹失败”);
}
File file3 = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/JavaSE/demo”);
if (file3.mkdirs()) {
} else {
}
}
}
注意:
相关属性
获取到 File 对象后,我们可以对其相关属性进行判断,常用方法如下:
| 返回值 | 方法 | 描述 |
| — | — | — |
| long | length() | 该抽象路径名表示的文件的所占字节大小 |
| boolean | canRead() | 该抽象路径名表示的文件是否可读 |
| boolean | canWrite() | 该抽象路径名表示的文件是否可写 |
| boolean | canExecute() | 该抽象路径名表示的文件是否可执行 |
import java.io.File;
/**
-
@author : cunyu
-
@version : 1.0
-
@className : Main
-
@date : 2021/4/20 11:04
-
@description : 相关属性
*/
public class Main {
public static void main(String[] args) {
File file = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/new.txt”);
if (file.canExecute()) {
System.out.println(“该对象可执行”);
} else {
System.out.println(“该对象不可执行”);
}
if (file.canRead()) {
System.out.println(“该对象可读”);
} else {
System.out.println(“该对象不可读”);
}
if (file.canWrite()) {
System.out.println(“该对象可写”);
} else {
System.out.println(“该对象不可写”);
}
System.out.println(“文件大小:” + file.length() + " Byte");
}
}
判断和获取
| 返回值 | 方法 | 描述 |
| — | — | — |
| boolean | isFile() | 测试此抽象路径名表示的文件是否为普通文件 |
| String | getPath() | 将抽象路径转换为路径字符串 |
| String | getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
import java.io.File;
/**
-
@author : cunyu
-
@version : 1.0
-
@className : Main
-
@date : 2021/4/20 11:15
-
@description : 判断和获取
*/
public class Main {
public static void main(String[] args) {
File file = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data”);
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.exists());
System.out.println(“-------------------------”);
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
System.out.println(“-------------------------”);
for (String path : file.list()) {
System.out.println(path);
}
System.out.println(“-------------------------”);
for (File path : file.listFiles()) {
System.out.println(path);
}
}
}
练习
import java.io.File;
/**
-
@author : cunyu
-
@version : 1.0
-
@className : Test
-
@date : 2021/4/20 11:40
-
*/
public class Test {
public static void main(String[] args) {
File file = new File(“C:/windows”);
for (File item : file.listFiles()) {
if (item.isFile()) {
System.out.println(“文件名:” + item.getName() + “\t文件大小占:” + item.length() + " 字节");
}
}
}
}
流
什么是流
所谓流,就是一系列数据的组合。当我们需要进行数据交互的时候,比如在服务器和客户端之间进行数据交互时,我们此时就可以使用 Java 中的流来实现。Java 中,数据的输入和输出都是以流的形式来进行的。根据数据流方向的不同,我们可以将其分为:输入流、输出流。而根据处理的数据单位不同,可分为:字节流、字符流。两者的关系可以描述为下表:
| | 字节流 | 字符流 |
| — | — | — |
| 输入流 | InputStream | Reader |
| 输出流 | OutputStream | Writer |
而对于字节流和字符流的选用原则,我们建议遵循如下规则:如果数据能够通过 Windows 自带笔记本软件打开并且能够读懂其中的内容,则选用字符流,否则选择字节流。而如果我们也不知道应该使用何种类型的流,则默认使用字节流。
下图描述了字节流和字符流的类层次图,注意:无论是字节流还是字符流,其子类名都是以其父类名作为子类名的后缀的。
InputStream
注意,InputStream 并非是并不是一个接口,而是所有字节输入流所有类的父类。下面我们主要以 FileInputStream 来举例,所谓 FileInputStream,就是从文件流中读取数据,然后将数据从文件中读取到内存,常用方法如下:
| 返回值 | 方法 | 描述 |
| — | — | — |
| int | available() | 返回该输入流中可以读取的字节数的估计值 |
| void | close() | 关闭输入流并释放相关资源 |
| int | read(bytep[] b) | 从输入流读取一些字节数,并将其存储到缓冲区 b |
下面是一个从文件中读取数据到内存中的实例,文件内容如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
*/
public class TestInputStream {
public static void main(String[] args) {
String result = null;
File file = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/1.txt”);
try (InputStream inputStream = new FileInputStream(file)) {
// 读取输入流中可以被读的 bytes 估计值
int size = inputStream.available();
// 根据 bytes 数创建数组
byte[] array = new byte[size];
// 数据读取到数组
inputStream.read(array);
// 数组转化为字符串
result = new String(array);
} catch (IOException e) {
e.printStackTrace();
}
// 打印字符串
System.out.println(result);
}
}
OutputStream
OutputStream 并非是并不是一个接口,而是所有输出字节流的所有类的父类。下面我们主要以 FileOutputStream 来举例,所谓 FileOutputStream,就是从内存中读取数据,然后将数据从内存存放到文件中,常用方法如下:
| 返回值 | 方法 | 描述 |
| — | — | — |
| void | write(byte[] b) | 将 b.length 个字节从指定字节数组写入此文件输出流 |
| void | close() | 关闭文件输出流并释放相关资源 |
import java.io.*;
/**
*/
public class TestOutputStream {
public static void main(String[] args) {
File file = new File(“D:/PersonalFiles/github/githubCodes/IDEA/TheWay2Java/IOStream/data/2.txt”);
String content = “这是一个 OutputStream 实例!”;
try (OutputStream outputStream = new FileOutputStream(file)) {
// 字符串转换为 byte 数组
byte[] array = content.getBytes();
// 写入数据
outputStream.write(array);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(“写入成功”);
}
}
需要注意的点:
写入换行的转义字符的字节数组即可,但是需要注意,不同系统下换行的转义字符不同,Windows 下为 \r\n,macOS 下为 \r,而 Linux 下为 \m。
调用 public FileOutputStream(String name, boolean append) 这个构造方法即可,当 append 为 true 时,表示追加,默认情况下是 false,表示不追加。
Java高频面试专题合集解析:
当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!
更多Java架构进阶资料展示
本文已被收录
lic FileOutputStream(String name, boolean append)这个构造方法即可,当append为true时,表示追加,默认情况下是false`,表示不追加。
Java高频面试专题合集解析:
[外链图片转存中…(img-JtvxUj9w-1715351271633)]
当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!
[外链图片转存中…(img-maFMj6jx-1715351271634)]
更多Java架构进阶资料展示
[外链图片转存中…(img-aQ3pYe69-1715351271634)]
[外链图片转存中…(img-Tb1Mlt0a-1715351271634)]
[外链图片转存中…(img-myOqcKCl-1715351271635)]
本文已被收录