java读写文件的方法
阅读数:81 评论数:0
跳转到新版页面分类
python/Java
正文
一、概述
字节流的基本单位是字节(Byte),它是用来处理二进制的,字节流有两个基类:InputStream和OutputStream。
字符流的基本单位为Unicode,大小为两个字节,通常用来处理文本数据,它有两个基类:Reader 和Writer。
二、读文件的方法
List<String> lines = Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8);
byte[] bytes = Files.readAllBytes(Paths.get(fileName));
String content = new String(bytes, StandardCharsets.UTF_8);
//带缓冲的流读取,默认缓冲区8k
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
//java 8中这样写也可以
try (BufferedReader br = Files.newBufferedReader(Paths.get(fileName))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
try (
Scanner sc = new Scanner(new FileReader(fileName))) {
//按行读取字符串
while (sc.hasNextLine()) {
String line = sc.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
三、写文件
try (FileWriter fileWriter = new FileWriter(filepath)) {
fileWriter.append(content);
}
// 第二个 append 的参数传递一个 true = 追加文件的意思
try (FileWriter fileWriter = new FileWriter(filepath, true)) {
fileWriter.append(content);
}
如果我们不使用缓冲区,那么每次写操作 CPU 都会和低速存储设备也就是磁盘进行交互,那么整个写入文件的速度就会受制于低速的存储设备(磁盘)。但如果使用缓冲区的话,每次写操作会先将数据保存在高速缓冲区内存上,当缓冲区的数据到达某个阈值之后,再将文件一次性写入到磁盘上。因为内存的写入速度远远大于磁盘的写入速度,所以当有了缓冲区之后,文件的写入速度就被大大提升了。
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filepath))) {
bufferedWriter.write(content);
}
无论是PrintWriter还是BufferedWriter都是基于FileWriter的。
try (PrintWriter printWriter = new PrintWriter(new FileWriter(filepath))) {
printWriter.print(content);
}
try (FileOutputStream fileOutputStream = new FileOutputStream(filepath)) {
byte[] bytes = content.getBytes();
fileOutputStream.write(bytes);
}
try (BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
new FileOutputStream(filepath))) {
bufferedOutputStream.write(content.getBytes());
}
Files.write(Paths.get(filepath), content.getBytes());
相关推荐
打开Java的JAR文件我们经常可以到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息。
一、概述
项目不大的话,我们可以选择ftp+nginx的方式来实现文件服务器,如果文件需求量大的话,建议使用分布式文件服务器(如minio或者阿里云OSS等),它对横向扩展的支持比较好。
二、前置知识
1、直接常量
为了编译器可以准确的知道要生成什么样的类型,可以给直接常量后面添加后缀字符标志它的类型,若为L表示long,F表示float,D表示double。也可以利用前缀表示进制,0x表示十六进制
一、类的继承
1、说明
(1)extends关键字用于类的继承。
(2)在C++中,方法的动态绑定是使用virtual关键字来实现的,而在Java中,动态绑定是默认的形为,不需要添加额外的关键字。
(
一、创建线程
创建线程有四种方式:继承Thread类、实现Runnable接口、实现Callable接口、通过线程池创建。
1、继承Thread
重写run方法。
class A extends Th
一、Collection接口
Collection接口的iterator和toArray方法都用于获得集合中的“所有元素”。前者返回一个“iterator”对象,后者返回一个包含集合中所有元素的数组。