前言:

最近翻阅我电脑中我过去写的代码的时候,发现以前尝试过用java读写txt文件,不过现在我也基本忘了,所以就有了这一篇🤣以免我以后有需要用到又四处查有关资料。

如有错误,欢迎大佬留言指正🤣。

【转载说明】本文优先发布于我的个人博客www.226yzy.com ,转载请注明出处并注明作者:星空下的YZY。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。

有关代码总览

有关代码总览,及部分注释如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.*;
import java.util.*;

public class Main
{
public static void main(String[] args) throws IOException
{
//创建File对象
File file=new File("text.txt");
//创建文件【如果该文件存在,这一步可省略】
file.createNewFile();

//读取内容,同时避免中文乱码
InputStreamReader fReader = new InputStreamReader(new FileInputStream(file),"UTF-8");//UTF-8或者GB2312【并且要与下面写入的一致】
BufferedReader br = new BufferedReader(fReader);
//输出每一行内容
String line;
System.out.println("------当前文件中的内容------");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();

//写入内容,同时避免中文乱码
Scanner sc=new Scanner(System.in);
System.out.println("请输入一行内容:");
String value=sc.nextLine();
FileOutputStream writerStream=new FileOutputStream(file,true);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));//UTF-8或者GB2312【并且要与上面读入的一致】
bw.write(value);
bw.close();
sc.close();
}
}

下文将分别讲

创建File对象

该部分代码如下:

1
2
3
4
//创建File对象
File file=new File("text.txt");
//创建文件【如果该文件存在,这一步可省略】
file.createNewFile();

text.txt可以替换成你文件的路径

file.createNewFile();会按照路径尝试创建该文件,如果该文件存在就不会重复创建。

读取内容

该部分代码及部分注释如下:

1
2
3
4
5
6
7
8
9
10
//读取内容,同时避免中文乱码
InputStreamReader fReader = new InputStreamReader(new FileInputStream(file),"UTF-8");//UTF-8或者GB2312【并且要与下面写入的一致】
BufferedReader br = new BufferedReader(fReader);
//输出每一行内容
String line;
System.out.println("------当前文件中的内容------");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();

这里特别注意可能出现的中文乱码的问题

首先要保证读写两个功能使用的字符集最好一致,否则仍有可能出现乱码

另外,手动在txt文件中输入中文,貌似我这么操作的情况下用UTF-8读取时中文会变成?,使用GB2312则可以正常显示中文😂。

写入内容

该部分代码及部分注释如下:

1
2
3
4
5
6
7
8
9
//写入内容,同时避免中文乱码
Scanner sc=new Scanner(System.in);
System.out.println("请输入一行内容:");
String value=sc.nextLine();
FileOutputStream writerStream=new FileOutputStream(file,true);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));//UTF-8或者GB2312【并且要与上面读入的一致】
bw.write(value);
bw.close();
sc.close();

同样要注意可能出现的中文乱码问题,具体见上文

FileOutputStream writerStream=new FileOutputStream(file,true);true表示在原来的内容上追加,若该值为false则表示覆盖原内容。

最后

暂时就写到这了,如有错误,欢迎大佬留言指正🤣。

欢迎访问我的小破站https://www.226yzy.com/ 或者GitHub版镜像 https://226yzy.github.io/ 或Gitee版镜像https://yzy226.gitee.io/

我的Github:226YZY (星空下的YZY) (github.com)

【转载说明】本文优先发布于我的个人博客www.226yzy.com ,转载请注明出处并注明作者:星空下的YZY。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。