java写入文件的几种方法分享

作者:shangke 时间:2023-06-26 15:56:55 

一,FileWritter写入文件

FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。

1. 替换所有现有的内容与新的内容。

new FileWriter(file);2. 保留现有的内容和附加在该文件的末尾的新内容。

new FileWriter(file,true);

追加文件示例
一个文本文件,命名为“javaio-appendfile.txt”,并包含以下内容。

ABC Hello追加新内容 new FileWriter(file,true)


package com.yiibai.file;

import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;

public class AppendToFileExample
{
 public static void main( String[] args )
 {
  try{
  String data = " This content will append to the end of the file";

File file =new File("javaio-appendfile.txt");

//if file doesnt exists, then create it
  if(!file.exists()){
   file.createNewFile();
  }

//true = append file
  FileWriter fileWritter = new FileWriter(file.getName(),true);
      BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
      bufferWritter.write(data);
      bufferWritter.close();

System.out.println("Done");

}catch(IOException e){
  e.printStackTrace();
  }
 }
}

结果

现在,文本文件“javaio-appendfile.txt”内容更新如下:

ABC Hello This content will append to the end of the file

二,BufferedWriter写入文件

缓冲字符(BufferedWriter )是一个字符流类来处理字符数据。不同于字节流(数据转换成字节),你可以直接写字符串,数组或字符数据保存到文件。


package com.yiibai.iofile;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
public static void main(String[] args) {
try {

String content = "This is the content to write into file";

File file = new File("/users/mkyong/filename.txt");

// if file doesnt exists, then create it
 if (!file.exists()) {
 file.createNewFile();
 }

FileWriter fw = new FileWriter(file.getAbsoluteFile());
 BufferedWriter bw = new BufferedWriter(fw);
 bw.write(content);
 bw.close();

System.out.println("Done");

} catch (IOException e) {
 e.printStackTrace();
}
}
}

三,FileOutputStream写入文件

文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。请参阅下面的完整的例子。


package com.yiibai.io;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFileExample {
public static void main(String[] args) {

FileOutputStream fop = null;
File file;
String content = "This is the text content";

try {

file = new File("c:/newfile.txt");
 fop = new FileOutputStream(file);

// if file doesnt exists, then create it
 if (!file.exists()) {
 file.createNewFile();
 }

// get the content in bytes
 byte[] contentInBytes = content.getBytes();

fop.write(contentInBytes);
 fop.flush();
 fop.close();

System.out.println("Done");

} catch (IOException e) {
 e.printStackTrace();
} finally {
 try {
 if (fop != null) {
  fop.close();
 }
 } catch (IOException e) {
 e.printStackTrace();
 }
}
}
}

//更新的JDK7例如,使用新的“尝试资源关闭”的方法来轻松处理文件。


package com.yiibai.io;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFileExample {
public static void main(String[] args) {

File file = new File("c:/newfile.txt");
String content = "This is the text content";

try (FileOutputStream fop = new FileOutputStream(file)) {

// if file doesn't exists, then create it
 if (!file.exists()) {
 file.createNewFile();
 }

// get the content in bytes
 byte[] contentInBytes = content.getBytes();

fop.write(contentInBytes);
 fop.flush();
 fop.close();

System.out.println("Done");

} catch (IOException e) {
 e.printStackTrace();
}
}
}

下面是其他网友的补充

java.io的几种读写文件的方式

一、java把这些不同来源和目标的数据都统一抽象为数据流。

Java语言的输入输出功能是十分强大而灵活的。

在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等。

这里介绍几种读写文件的方式

二、InputStream、OutputStream(字节流)


//读取文件(字节流)
FileInputStream in = new FileInputStream("d:\\1.txt");
//写入相应的文件
FileOutputStream out = new FileOutputStream("d:\\2.txt");
//读取数据
//一次性取多少字节
byte[] bytes = new byte[2048];
//接受读取的内容(n就代表的相关数据,只不过是数字的形式)
int n = -1;
//循环取出数据
while ((n = in.read(bytes,0,bytes.length)) != -1) {
 //转换成字符串
 String str = new String(bytes,0,n,"UTF-8"); #这里可以实现字节到字符串的转换,比较实用
 System.out.println(str);
 //写入相关文件
 out.write(bytes, 0, n);
 //清除缓存向文件写入数据
 out.flush();
}
//关闭流
in.close();
out.close();

三、BufferedInputStream、BufferedOutputStream(缓存字节流)使用方式和字节流差不多,但是效率更高(推荐使用)


//读取文件(缓存字节流)
BufferedInputStream in=new BufferedInputStream(new FileInputStream("d:\\1.txt"));
//写入相应的文件
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
//读取数据
//一次性取多少字节
byte[] bytes = new byte[2048];
//接受读取的内容(n就代表的相关数据,只不过是数字的形式)
int n = -1;
//循环取出数据
while ((n = in.read(bytes,0,bytes.length)) != -1) {
 //转换成字符串
 String str = new String(bytes,0,n,"UTF-8");
 System.out.println(str);
 //写入相关文件
 out.write(bytes, 0, n);
 //清除缓存,向文件写入数据
 out.flush();
}
//关闭流
in.close();
out.close();

四、InputStreamReader、OutputStreamWriter(字节流,这种方式不建议使用,不能直接字节长度读写)。使用范围用做字符转换


//读取文件(字节流)
InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"UTF-8");
//写入相应的文件
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
//读取数据
//循环取出数据
char[] chars = new char[2048];
int len = -1;
while ((len = in.read(chars,0,chars.length)) != -1) {
 System.out.println(len);
 //写入相关文件
 out.write(chars,0,len);
 //清除缓存
 out.flush();
}
//关闭流
in.close();
out.close();

五、BufferedReader、BufferedWriter(缓存流,提供readLine方法读取一行文本)


FileInputStream fileInputStream = new FileInputStream("d:\\1.txt");
FileOutputStream fileOutputStream = new FileOutputStream("d:\\2.txt", true);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");
//读取文件(字符流)
BufferedReader in = new BufferedReader(inputStreamReader,"UTF-8"));#这里主要是涉及中文
//BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
//写入相应的文件
BufferedWriter out = new BufferedWriter(outputStreamWriter,"UTF-8"));
//BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
//读取数据
//循环取出数据
String str = null;
while ((str = in.readLine()) != null) {
 System.out.println(str);
 //写入相关文件
 out.write(str);
 out.newLine();
 //清除缓存向文件写入数据
 out.flush();
}
//关闭流
in.close();
out.close();

六、Reader、PrintWriter(PrintWriter这个很好用,在写数据的同事可以格式化)


//读取文件(字节流)
   Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"UTF-8");
   //写入相应的文件
   PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
   //读取数据
   //循环取出数据
   byte[] bytes = new byte[1024];
   int len = -1;
   while ((len = in.read()) != -1) {
     System.out.println(len);
     //写入相关文件
     out.write(len);
     //清除缓存
     out.flush();
   }
   //关闭流
   in.close();
   out.close();

七、基本的几种用法就这么多,当然每一个读写的使用都是可以分开的。为了更好的来使用io。流里面的读写,建议使用BufferedInputStream、BufferedOutputStream

标签:java,写文件
0
投稿

猜你喜欢

  • WPF开发技巧之花式控件功能扩展详解

    2022-07-13 05:56:52
  • java保证对象在内存中唯一性的实现方法

    2023-11-27 21:30:03
  • Java中BigDecimal的加减乘除、比较大小与使用注意事项

    2022-02-17 21:24:09
  • Android实现图片在屏幕内缩放和移动效果

    2021-10-28 12:24:57
  • c# 如何更简单的使用Polly

    2022-10-24 11:27:46
  • Java实现合并两个有序序列算法示例

    2021-09-06 23:23:53
  • Android提高之蓝牙传感应用实例

    2023-02-04 01:12:32
  • Android实现图片点击爆炸效果

    2023-06-04 04:18:55
  • Android硬件解码组件MediaCodec使用教程

    2023-03-14 01:35:36
  • c# 二分查找算法

    2023-10-24 04:42:45
  • Java ArrayList实现删除指定位置的元素

    2023-11-25 05:34:13
  • java如何生成登录随机验证码

    2023-08-21 11:42:57
  • c#多种加解密示例(md5加密解密)

    2022-08-26 07:17:10
  • 解析C++哈夫曼树编码和译码的实现

    2021-11-19 05:26:25
  • Unity3D Ui利用shader添加效果

    2022-09-17 15:32:47
  • 解决logback-classic 使用testCompile的打包问题

    2021-07-01 08:16:50
  • 利用DrawerLayout和触摸事件分发实现抽屉侧滑效果

    2022-11-09 04:45:51
  • 深入理解Java中观察者模式与委托的对比

    2023-10-30 18:00:03
  • C#实现简单的汽车租赁系统

    2022-08-17 00:51:52
  • Android xUtils更新到3.0后的基本使用规则详解

    2023-02-07 23:14:39
  • asp之家 软件编程 m.aspxhome.com