需求说明:
在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
实现思路:
创建 SaveNewFile 类,在main方法中,使用2个new File指向一个要读取的文件和一个要写入的文件
定义String readTxtFile(File file) 方法,该方法将读取目标文件的内容,并将读取的内容返回
定义void writeContent(String str, File newFile) 方法,该方法用来将更改后的文本写入到新文件内
在main方法中调用readTxtFile方法得到读取文件的内容,然后再次 调用writeContent方法,传入追加的内容以及要写入的文件对象完成文件保存
实现代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class SaveNewFlie { public static void main(String[] args) { SaveNewFlie saveNewFlie = new SaveNewFlie(); //需要读取的文本对象 File file = new File("z:\\xin.txt"); //需要写入新内容的文本对象 File newFile = new File("d:\\newXin.txt"); //判断读取的内容是否存在 if (file.exists()) { //返回读取的文本内容 String str = saveNewFlie.readTxtFile(file); //将改变后的文本内容写入到新文件内 saveNewFlie.writeContent(str+"【来自新华社】", newFile); System.out.println("重写文件成功"); } else { System.out.println("改文件不存在,不能读取!"); } } //将更改后的内容写入到一个新的文件内 public void writeContent(String str, File file) { FileOutputStream output = null; try { //实例化一个字节输出流 output = new FileOutputStream(file); //把要写入的文本内容转换成字节数组 byte[] temp = str.getBytes(); //将保存在字节数组内的数据写入到新文件内 output.write(temp); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if (output != null) { try { output.close(); } catch (IOException e) { e.printStackTrace(); } } } } //读取文件内的文本内容 public String readTxtFile(File file) { String str = null; FileInputStream input = null; try { //实例化一个字节输入流 input = new FileInputStream(file); //创建一个字节数组,用来保存读取到的内容 byte[] temp = new byte[(int)file.length()]; //将读取到的内容保存到字节数组 input.read(temp); //将字节数组转换成字符串 str = new String(temp,"gbk"); System.out.println("原始内容:"+str); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } return str; } }