FileWriter类在java中的使用:
import java.io.FileWriter;
import java.io.IOException;
/*
* FileWriter:
* FileWriter(String fileName):创建一个文件名称
* 输出流写数据的步骤:
* 1 创建输出流对象
* 2 调用输出流对象写数据的方法
* 3 刷新
* 4 释放资源
* */
public class FileWirterDemo {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("D:\\a.txt");
//创建输出流对象做了哪些事情:
// 1 调用系统资源创建了一个文件
// 2 创建输出流对象
// 3 把输出流对象指向文件
fw.write("dadadada"); //数据没有直接写到文件中,而是写到了内存缓冲区
fw.flush();
fw.close();
// 通知系统释放和文件相关的资源
}
}
import java.io.FileWriter;
import java.io.IOException;
/*
* * 输出流写数据的步骤:
* 1 创建输出流对象
* 2 调用输出流对象写数据的方法
* 3 刷新
* 4 释放资源
* 相对路径: 相对当前项目而言的,在项目的根目录下(a.txt)
* 绝对路径:以盘符开始的路径 D://a.txt
* close() 和 flush()的区别
* flush():刷新缓冲区 流对象可以再被使用
* close():先刷新缓冲区 然后通知系统释放资源 流对象不可以在被使用了*/
public class FileWriterDemo2 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("D://a.txt");// 如果你没有写盘符 那么就是a.txt
fw.write("涛哥牛逼");
fw.flush();
fw.close();
}
}
import java.io.FileWriter;
import java.io.IOException;
/**/
public class FileWriteDemo3 {
/*
FileWriter 写数据的5个方法
* void write(String str):写一个字符串数据
* void write(String str,int index,int len): 写一个字符串中的一部分
* void write(int ch): 写一个字符数据,这里写int类型的好处是既可以写char类型的数据 也可以写char 对应的int类型的值
* void write(char[] chs):写一个字符数组数据
* void write(char[] chs,int index,int len): 写一个字符数组的一部分数据*/
public static void main(String[] args) throws IOException {
FileWriter fw= new FileWriter("b.txt");
//void write(String str):写一个字符串数据
fw.write("abcde");
fw.write("abced",1,3);
fw.flush();
fw.close();
}
}
import java.io.FileWriter;
import java.io.IOException;
/*
* 如何实现数据的换行
* \n 可以实现换行 但是window系统自带的记事本呢打开并没有换行 这是因为windows 是别的换行是/r/n
* windows /r/n
* Linux /n
* mac /n
* 如何实现数据的追加
* true的使用*/
public class FileWriterDemo4 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("c.txt",true); //表示可以追加写入 默认是false
for (int i = 0; i < 10; i++) {
fw.write("hello"+i+"\n");
}
}
}
FileReader类在java中的使用:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 需求:从文件中读数据并显示到控制台
* 读数据 -- 输入流 --FileReader
* FileReader:
* FileReader(String filename):传递文件名称
* 输入流读文件的步骤:
* 1 创建输入流对象
* 2 调用输入流对象的读取方法
* int read() 返回的字符的int值
* * int read(char [] cbuf): 一次读取一个字符数组的数据
* 3 释放资源*/
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("fr.txt");
// 读取文件
//System.out.print((char)fr.read());
//System.out.print((char)fr.read());
//System.out.print((char)fr.read());
//这时我们发现代码的重复的特别高 我们开始考虑要不要使用循环
// 通过测试 我们发现 如果读取的数据的返回值是-1时候 就说明没有数据了 就是循环的结束条件
int ch;
while((ch = fr.read())!=-1)
{
System.out.print((char)ch);
}
fr.close();
}
}
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/** FileReader(String filename):传递文件名称
* 输入流读文件的步骤:
* 1 创建输入流对象
* 2 调用输入流对象的读取方法
* int read(char [] cbuf): 一次读取一个字符数组的数据
* 3 释放资源*/
public class FileReaderDemo2 {
public static void main(String[] args) throws IOException {
/*
FileReader fr = new FileReader("fr2.txt");
char [] chs = new char[5];
int len = fr.read(chs); //len 不是读取的字符长度 而是实际读取的字符个数
System.out.println("len"+len);
System.out.println(new String(chs,0,len));
len = fr.read(chs);
System.out.println("len"+len);
System.out.println(new String(chs,0,len)); //这里其实也读到了5个字符 不过它读到了hello后的\r\n
len = fr.read(chs);
System.out.println("len"+len);
System.out.println(new String(chs,0,len));
*/
// 第一次 hello
// 第二次 \r\nwor
//第三次 ld\r\nr
// 我们发现读取代码的相似度很高 想用循环改进 但是不知道什么时候结束循环
// 通过测试 我么发现 如果实际长度为-1时,就没有数据了
FileReader fr = new FileReader("fr2.txt");
char [] chs = new char[1024]; //这里可以是1024或者其整数倍
int len;
while((len=fr.read(chs))!=-1)
{
System.out.print(new String(chs,0,len)); // 0 - len 是为了防止得到自己不想要的数据
}
fr.close();
}
}