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() 有五种重载方式:
-
write(int args):写入数字,利用 ASCII 码表 或者 Unicode 表转化
-
write(String str):写入字符串
-
write(String str,int offset,int count):写入字符串的一部分
-
write(char[] array):写入字符数组
-
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