一般来说,我们用File I/O的主要用法就是:
1、可以得到一个永久的副本。
2、一个程序的输出可以输入到另一个程序。
3、可以自动输入,不必手动输入,最主要还是一个方便,比方说写一个网页的时候,可以写个按钮,做个功能,比方说我最近涉及到的毕业设计,就是可以写一个File I/O来弄一个Json和Xml文件之间的自动转换,极为方便。
笔者之前犯蠢了,自己在写的时候不小心把两个功能给弄混了,结果导致我的Json文件内容的丢失。
还好,进行回滚,将原本的内容给找回来了,开发常用小知识get。
回滚Rollback:程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。
打开文件文本进行输入,链接到流之后进行读取。
我们这里用到的是FileReader类,这个类可以按字符读取流中的数据,当然FileInputStream也能使用。
准备一个文件,定义为text.txt,假设我这个文件中的内容是1,2,3。(进行测试用)
然后读取该文本文件的内容,即得到:FileReader readtext = new FileReader("text.txt");
之后的话就是链接到流进行读取,得到:BufferedReader inread = new BufferedReader(readtext);
但是这样的话,是没有办法读取到控制台的,我们需要将其转化为字符串形式,才能将其读出到控制台。
这里我用到一个readLine()方法,看表面意思也可以知道是逐行读取,只要每一行都不为空,那就打印到控制台。
按照这个逻辑的话,可以定义一个空的字符串,比方说String test1 = null;
然后利用一个while循环来进行遍历,之后打印出来,得到:while((test1 = inread.readLine) != null)
System.out.println(test1);
package fileio;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileIO {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileReader readtext=new FileReader("text.txt");
BufferedReader inread = new BufferedReader(readtext);
String test1 = null;
while((test1=inread.readLine())!=null)
System.out.println(test1);
}
}
与输入流Input Stream对应,输出流Output Stream指的便是将内容输出到文件文本当中。
与FileReader对应,我们这里要使用的便是FileWriter与BufferedWriter,当然,类似FileOutputStream和PrintWriter也能使用。
相似的,假设我们要将内容都输出到已经建立好的文件textsecond.txt中。
首先是定位到这个文件,可以得到FileWriter writertext = new FileWriter("textsecond.txt");
其次便是BufferedWriter outwriter = new BufferedWriter(writertext);
这里比方说我们要输入到testsecond.txt文件中的内容是10个number,那么我们可以写一个循环遍历1到10,然后通过输出流将10个number打印到文件当中去。
for(int number = 1;number <= 10;number++){
outwriter.write("number");
outwriter.newLine();
}
System.out.println("had been printed...");
package fileio;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileIO {
public static void main(String[] args) {
try{
FileWriter writertext = new FileWriter("textsecond.txt");
BufferedWriter outwriter = new BufferedWriter(writertext);
for(int number = 1;number <= 10;number++){
outwriter.write("number");
outwriter.newLine();
}
System.out.println("had been printed...");
outwriter.close();
}catch(IOException e){
}
}
}
结果:
总的来说,File I/O 输入输出并没有那么难,难度适中,不过FileWriter和PrintWriter等之间还是有点区别的,比方说println这个读出的方法只有在PrintWriter的时候才能使用,其他当然还有区别,具体什么区别的话,等我下次再进行整理了,今天就先讲这么多了。