- 十三、泛型
- 1. 泛型:
- 2. 作用:
- 3. 泛型通配符
- 十四、IO流
- 1. 什么是IO流
- 2. 分类
- a. 输入流与输出流
- b. 字节流和字符流
- 3. IO流继承关系
- 4. 常用方法:
- 5. 详解
- 6. 实例,读取csv文件并保存
泛型 是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。也就是说在泛型使用过程中, *** 作的数据类型被指定为一个参数,而这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口。
2. 作用:泛型的出现就是为了避免类型强转而产生的异常,确保代码可以正常编译。
3. 泛型通配符当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符> 表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
类名 extends 类>
说明:表示可以传递类以及它的子类
举例: List extends Father> list1 = new ArrayList< Son>;
其中,Son类为Father类的子类
十四、IO流 1. 什么是IO流类名 super 类>
说明:表示可以传递类以及它的父类
流是一组有序的数据集合,即数据在两设备间的传输称为流。流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据 *** 作。
IO流,简单来说就是为了读写数据,来进行系统调用。绝大部分都是用来读文件写文件,其中字节流一次 *** 作一个字节,字符流一次 *** 作一个字符,至于bufferReader之类的,是带缓存的流,一次 *** 作一大堆,减少系统调用。
2. 分类 a. 输入流与输出流一次调用,读就是把文件从硬盘读取到内存(输入流),写就是把文件从内存中保存到硬盘(输出流)
b. 字节流和字符流如果一次 *** 作一个字节,就是字节流(字节输入流InputStream、字节输出流OutputStream),也就是说一次读、写一个字节,这种流可以读取任意类型文件。
对应一次 *** 作一个字符,就是字符流(字符输入流Reader、字符输出流Write),方便读取文本文件,不能读取图片、音频、视频等。
https://blog.csdn.net/my_name_nb/article/details/53439114
5. 详解感兴趣的可以看看https://blog.csdn.net/qq_44732146/article/details/120444101
6. 实例,读取csv文件并保存public void readCSVFile() {
// 获取文件
File file = new File("C://Users/asus/Desktop/test2020-09-06.csv");
String tempStr = "";
// 封装文件内容的List
List<String[]> tempStrArryList = new ArrayList<>();
// 使用了java7的try-catch-with,可以不用手动关闭流
try (BufferedReader read = new BufferedReader(new FileReader(file))) {
// 将文件中每一行的文字赋值给临时变量tempStr
while ((tempStr = read.readLine()) != null) {
// 这里以csv文件为例子,去除csv文件读入时的双引号,并将数据以逗号进行分割,封装成数组
String[] tmpStrArray = tempStr.replace("\"", "").split(",", -1);
// 每一行数据封装的数组保存在List中
tempStrArryList.add(tmpStrArray);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void exportCsvFile() {
// 定义文件生成的路径
File file = new File("C://Users/asus/Desktop/test"
+ DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDateTime.now()) + ".csv");
StringBuilder sb = new StringBuilder();
try (BufferedWriter write = new BufferedWriter
(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))) {
// 这里正常会是一个实体类型的List,这里为了测试数据量而临时制作
for (int i = 0, j = 500000; i <= 500000; i++, j--) {
sb.delete(0, sb.length());
sb.append("\"").append(i + "" + j).append("\"").append(",").append("\n");
// 将内容写入文件中
write.append(sb.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)