前言:
最近翻阅我电脑中我过去写的代码的时候,发现以前尝试过用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=new File("text.txt"); file.createNewFile(); InputStreamReader fReader = new InputStreamReader(new FileInputStream(file),"UTF-8"); 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")); bw.write(value); bw.close(); sc.close(); } }
|
下文将分别讲
创建File对象
该部分代码如下:
1 2 3 4
| 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"); 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")); 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许可协议。