文本文件的读写在项目中会经常涉及,需要我们熟练掌握。
【功能】FileWriter类专门用来写字符到文本文件中。
【构造方法】
public FileWriter(String fileName):此构造方法的参数是文件名。文件名可以是相对路径,也可以绝对路径。此构造方法构造的对象,往文件写数据时,会擦除文件内原始内容,从头开始写数据。
public FileWriter(String fileName, boo
lean append):此构造方法要求两个参数,第一个单数fileName表示文件名,第二个参数append为true表示所写的新字符追加到文件原始内容之后,为fasle表示擦除文件的原始内容,从新开始写数据。
FileWriter(File file):根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append):根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd):构造与某个文件描述符相关联的 FileWriter 对象。
【注意】
【实例】:
// FileWriter类本身没有换行的方法,需要通过转义符换行
public static void writeTxt1(){
// 构造对象时,append参数指示新字符是否添加到原内容后,该参数默认为false
try(FileWriter fw = new FileWriter("other\\out1.txt", true)){
fw.write("直接使用FileWriter写字符流到文件中\r\n");
// fw.write("hhhh");
// fw.write(System.getProperty("line.separator"));
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
【补充】不同系统的用来表示换行的转义字符不同,例如windows为’\r\n’,Unix为’\n’,mac为’\r’,因此,我们一般使用System.getProperty("line.separator")
来获得当前系统的换行符。
【功能】
将文本写入输出流,缓冲各个字符,从而提供单个字符、字符数组和字符串的高效写入。
【主要接口】
void write(char ch);//写入单个字符。
void write(char []cbuf,int off,int len)//写入字符数据的某一部分。
void write(String s,int off,int len)//写入字符串的某一部分。
void newLine()//写入一个行分隔符。
void flush();//刷新该流中的缓冲。将缓冲数据写到目的文件中去。
void close();//关闭此流,再关闭前会先刷新他。
【构造方法】
【实例】
public static void writeFile(){
try {
File writeName = new File(".\\other\\out.txt");
writeName.createNewFile();
try (FileWriter writer = new FileWriter(writeName, true);
BufferedWriter out = new BufferedWriter(writer)){
out.write("写入文件1");
out.newLine(); // 换行
out.write("写入文件2");
out.newLine();
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
【功能】按字节读取文件
【主要接口】
int read(); // 读取一个字符并返回其对应的ASCII值
int read(char cbuf[], int offset, int length); // 读取多个字符到指定的数组中,可指定偏移量和读取长度
【实例】
public static void readTxt1(){
try (FileReader fr = new FileReader("other\\out1.txt")){
int ch = 0;
while ((ch = fr.read()) != -1){ // 单字符读入,也可以读入多个字符并存到符数组中
System.out.println((char)ch);
}
}catch (IOException e){
e.printStackTrace();
}
}
【功能】从字符流中读取文本,并且缓存字符串以提供高效的按字符,数组,按行读取的方式。
【构造方法】
int read(); // 读取一个字符
int read1(char[] cbuf, int off, int len); // 读取字符到字符数组中,指定偏移和数组长度
String readLine(); // 读取一行,可选择跳过换行符
long skip(long n); // 跳过n个字符
【实例】
public static void readFile(){
String pathName = "other\\test.txt";
// Java7的try-with-resources可以优雅关闭文件,异常时自动关闭文件;
try(FileReader reader = new FileReader(pathName);
BufferedReader br = new BufferedReader(reader)){
String line;
// 按行读取数据
while ((line = br.readLine()) != null){
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
【补充】推荐使用JDK7新特性 try-with-resources语法来自动关闭外部资源,不用在finally中手动关闭资源。
参考博客https://www.cnblogs.com/bayes/p/5478862.html