package com.sbx.io; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.Scanner; /** * Created by BlueLover * Name:苏半夏 * Date:2021/2/26 * Time:11:00 */ public class MyFileTest { /** * 使用FileOutputStream类向文件中写入数据与使用FileInputStream类从文件中将内容读出来,都存在一点不足,即这两个类值提供了对字节或字节数组的读取方法。由于汉字在文件中占用两个字节,如果使用字节流,读取不好可能会出现乱码现象,此时采用字符流Reader或Writer类即可避免这种现象。 */ String text; //读取文件的方法 public void ReadFile(File file){ try{ //读取文件中的内容 FileReader in = new FileReader(file); char byt[] = new char[2]; int len; System.out.println("文件中的信息是:"); while((len = in.read(byt))!=-1){ System.out.print(new String(byt,0,len)); text += new String(byt,0,len); } in.close(); text = this.text.substring(4); System.out.println(text); } catch (StringIndexOutOfBoundsException e1){ System.out.println("文件内容为空"); } catch (Exception e){ e.printStackTrace(); } } //写入文件的方法 public void WriteFile(File file){ try{ /** * 为了避免原有内容被覆盖,我们需要先读取出原有的内容 */ this.ReadFile(file); //写入文件 FileWriter out = new FileWriter(file); System.out.println("请输入要写入的内容:"); Scanner scanner = new Scanner(System.in); String newText = scanner.next(); System.out.println("是否覆盖原有内容?请选择:1-是 2-否 "); if (Integer.parseInt(scanner.next())==1){ System.out.println("您选择覆盖原有内容"); out.write(newText); }else{ System.out.println("您选择不覆盖原有内容"); out.write(this.text); out.write(newText); } scanner.close(); out.close(); }catch (Exception e){ e.printStackTrace(); } } public static void main(String[] args) { File file = new File("test.txt"); MyFileTest myFileTest = new MyFileTest(); System.out.println("============读取=============="); myFileTest.ReadFile(file); System.out.println("============写入=============="); myFileTest.WriteFile(file); System.out.println("============写入后读取=============="); myFileTest.ReadFile(file); } } /* 潇洒如我最近却变得有点敏感 半小时收不到你讯息就会坐立不安 都说别爱的太满 这道理知易行难 我还挺乐意享受这份甜中微酸 你的笑像西瓜最中间那一勺的口感 点亮了一整个夏天 星空也为你斑斓 我不会深情款款上演什么套路桥段 我的爱纯粹简单 */
原文:https://www.cnblogs.com/weiXinp/p/14465599.html