FileWriter的用法 wirte() 方法

  • Post author:
  • Post category:其他




FileWriter的用法就三个字:

创,写,关


创:new 一个


写:利用 wirter() 方法


关:利用 close() 方法



下面就是创建一个文件的具体步骤:

import java.io.*;

public class FileWriter01 {
	public static void main(String[] args) throws IOException {
		FileWriter fw = new FileWriter("file01.txt");
		fw.write("Hello world");
		fw.close();
	}
}



如果这个文件不存在也可以这样做吗?



  • 是的,如果这个文件不存在,那么就会帮我们自动创建一个,创建完以后的纯文本文件放在哪里呢?放在这个 Java project 加瓦工程下面。



如果这个文件存在的话并且里面有内容会怎么样呢?



  • 如果这个纯文本文件已经存在,并且里面有内容,此时我们再添加内容,就会覆盖掉这个纯文本文件已有的内容。



那我不想覆盖,想追加内容可以做到吗?



  • 当然可以,我们只需要在创建对象的时候,选择另外一个构造方法就可以追加而不是覆盖。


    创建对象的时候我们这样创建:
FileWriter fw = new FileWriter("file01.txt",true);



奇怪,我发现写到纯文本文件里头的数据都是在同一行的,能不能换行呢?



  • Of course!你只需要在调用 write() 方法的时候,写多两个字符 \r\n 就可以做到啦

  • 当然,我这里指的是在 Windows 系统下,

  • 在 macOS 系统下,早期使用的是 \r,现在使用的是 \n

  • 在 Linux    系统下,使用的是 \n
fw.write("何以解忧\r\n唯有 Java!");



学了计算机这么久,我们应该都知道了,在计算机里头都是一个个的数字,二进制,是计算机用来彼此交流的语言,我们从上述学习的 FileWrite 来看,当我们调用 write() 方法的时候,我们写进去的,Windows 的记事本会翻译它,翻译成二进制,翻译成能够被计算机识别的语言。翻译总得有个标准,首先就会先找 ASCII 码表上的内容,如果没有呢?就会再去找万国码的 Unicode 表来进行翻译。我们在调用 write() 的时候,也可以写个 20013 试试,这是中国的 ‘中’ 字。



为了方便需要我们需要记住在 ASCII 码表中常用的:48 – 0,65 – A,97 – a

package iterator;
import java.io.*;

public class FileWriter01 {
	public static void main(String[] args) throws IOException {
		FileWriter fw = new FileWriter("file01.txt");
		fw.write(48);
		fw.write(65);
		fw.write(97);
		fw.write(20013);
		fw.close();
	}
}
显示出来的结果:0Aa中



write() 有五种重载方式:



  1. write(int args):写入数字,利用 ASCII 码表 或者 Unicode 表转化

  2. write(String str):写入字符串

  3. write(String str,int offset,int count):写入字符串的一部分

  4. write(char[] array):写入字符数组

  5. write(char[] array,int offset,int count):写入字符数组的一部分
package iterator;
import java.io.*;

public class FileWriter01 {
	public static void main(String[] args) throws IOException {
		FileWriter fw = new FileWriter("file01.txt");
		//write() 方法有五种重载方式
		
		//1----
		fw.write(97);
		fw.write(98);
		fw.write(99);
		
		//2----
		fw.write("\r\nHello");
		fw.write("\r\nWorld");
		
		//3----从第 8 位开始,取 7 个字符
		fw.write("取次花丛懒回顾,半缘修道半圆君",8,7);
		
		
		char[] array = {'J','a','v','a'};
		
		//4----
		fw.write(array);
		
		//5----
		fw.write(array,1,2);
		

		fw.close();
	}
}

显示结果:

abc
Hello
World半缘修道半圆君Javaav