EduCoderJava语⾔之⽂件操作
第1关:⽂件读取 - 打印时刻表
FileReader类
该类⽤于从⽂件中读取数据,它的对象⽤关键字new来创建。在创建该对象之前,我们还需先使⽤File()⽅法来创建⼀个⽂件对象。
下⾯是创建这两个对象的⽰例,注意创建对象前要导⼊包:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
File file =new File("src/");
FileReader fileReader =new FileReader(file);
对象创建好之后,我们⽤read()⽅法读取⽂件中的数据。该⽅法会返回⼀个整数值,为所读取的字符在Unicode中的值,例如如果读到的字符是A,则返回值是65;当读取到⽂件末尾时,返回-1。因此我们需要使⽤(char)⽅法对返回值进⾏类型转换(除返回值为-1之外),还原原本的字符A。
下⾯是⼀个读取⽂件内容并输出在显⽰器上的⽰例(假设所需对象已经创建好):
int read = ad();
while(read !=-1){//循环读取,直到read的值为-1,表⽰⽂件读到末尾
System.out.print((char)read);//输出读取的数据,使⽤(char)⽅法对read的值进⾏类型转换
read = ad();//读取下⼀个字符
}
当读取⽂件完毕后,记得要关闭⽂件流:
fileReader.close();
除了FileReader类之外,还有很多类也可以实现从⽂件中读取数据,例如FileInputStream类 。该类的
对象创建和使⽤的语法与FileReader类基本⼀致,但是该类的对象在读取中⽂字符时会出现乱码。
在此,我们只要求同学们掌握FileReader类的使⽤。
源码:
package step1;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class TimeTable {
public static void main(String[] args)throws IOException {
/********** Begin *********/
File file =new File("src/step1/");
FileReader fileReader =new FileReader(file);
int read = ad();
while(read !=-1){//循环读取,直到read的值为-1,表⽰⽂件读到末尾
System.out.print((char)read);//输出读取的数据,使⽤(char)⽅法对read的值进⾏类型转换
read = ad();//读取下⼀个字符
}
fileReader.close();
/********** End *********/
}
}
第2关:⽂件写⼊ - 添加时刻表
FileWriter类
该类⽤于向⽂件中写⼊数据,它的对象⽤关键字new来创建。在创建该对象之前,我们同样需先使⽤File()⽅法来创建⼀个⽂件对象。
下⾯是创建这两个对象的⽰例,注意创建对象前要导⼊包:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
File file =new File("src/");
FileWriter fileWriter =new FileWriter(file,true);
注意最后⼀条语句中调⽤构造⽅法FileWriter()时的传递值true,它表⽰当fileWriter对象对⽂件再次写⼊时,会在⽂件的末尾追加数据,⽽不是将⽂件覆盖。如果想将原⽂件数据覆盖,传递false。
对象创建好之后,我们⽤write()⽅法向⽂件写⼊数据,write()⽅法的⼩括号中直接添加需要写⼊⽂件的
字符串类型数据。如果我们需要写⼊⼀个换⾏符,我们可以先定义⼀个LINE_SEPARATOR常量,然后⽤write()⽅法向⽂件写⼊该常量。
下⾯是⼀个向⽂件写⼊两⾏字符串数据的⽰例(假设所需对象已经创建好):
private static final String LINE_SEPARATOR = Property("line.separator");//定义LINE_SEPARATOR常量,表⽰换⾏符
String string1 ="Hello";
String string2 ="World";
fileWriter.write(string1 + LINE_SEPARATOR + string2 + LINE_SEPARATOR);
fileWriter.close();
写⼊⽂件完毕后,同样要记得关闭⽂件流:
fileWriter.close();
编程要求
本关的编程任务是补全右侧代码⽚段中Begin⾄End中间的代码,具体要求如下:
time1和time2变量为需要向⽂件src/step2/写⼊的两⾏时刻表数据。
在恰当的位置添加换⾏符(养成在⽂件末尾添加⼀个换⾏符的习惯)。
⽂件写⼊类型为覆盖原⽂件数据后写⼊新的数据。
源码
package step2;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
public class AddTimeTable {
private static final String LINE_SEPARATOR = Property("line.separator");//定义LINE_SEPARATOR常量,表⽰换⾏符
public static void start(String time1, String time2)throws IOException {
/********** Begin *********/
File file =new File("src/step2/");
FileWriter fileWriter =new FileWriter(file,false);
fileWriter.write(time1 + LINE_SEPARATOR + time2 + LINE_SEPARATOR);
fileWriter.close();
/********** End *********/
}
}
第3关:Java⽂件操作综合运⽤
⽂件创建
使⽤⽂件对象的createNewFile()⽅法创建⽂件,该⽅法会返回⼀个布尔值,若成功创建⽂件,返回true;否则返回false:
File file =new File("src/step1/");file对象指向src⽂件夹下的step1⽂件夹下的⽂件(此时此⽂件不存在)
if(!ists()){//如果⽂件不存在
System.out.ateNewFile());//创建⽂件,并输出布尔值
}
⽂件或⽂件夹删除
删除⽂件或⽂件夹使⽤⽂件对象的delete()⽅法,该⽅法会返回⼀个布尔值,若成功删除⽂件,返回true;否则返回false:
File file =new File("src/step1/");//file对象指向src⽂件夹下的step1⽂件夹下的⽂件
ists()){//如果⽂件存在
System.out.println(file.delete());//删除该⽂件,并输出布尔值
}
File file =new File("src/step1");//file对象指向src⽂件夹下的step1⽂件夹
java的tostring方法ists()){//如果⽂件夹存在
System.out.println(file.delete());//删除该⽂件夹,并输出布尔值
}
操作完毕后同样要记得关闭⽂件流。
补充:
可以使⽤StringBuilder类的对象保存读取到的⽂件中的内容,该对象已为同学们创建好,使⽤append()⽅法向对象添加数据。
向⽂件写⼊StringBuilder类的对象时,为了保持数据的⼀致性,需要先使⽤toString()⽅法将数据对象转换为String类型后再写⼊。源码
package step3;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class DeleteFiles {
public static void start()throws IOException {
StringBuilder data =new StringBuilder("");
/********** Begin *********/
//读取⽂件
FileReader fileReader =new FileReader("src/");
//写⼊⽂件
File file =new File("src/");//file对象指向src⽂件夹下的step1⽂件夹下的⽂件(此时此⽂件不存在)if(!ists()){//如果⽂件不存在
System.out.ateNewFile());//创建⽂件,并输出布尔值
}
FileWriter fileWriter =new FileWriter("src/");
int read = ad();
while(read!=-1){
System.out.print((char)read);
fileWriter.write((char)read);
ad();
}
fileReader.close();
//删除⽂件
File file1 =new File("");
ists()){//如果⽂件存在
System.out.println(file1.delete());//删除该⽂件,并输出布尔值
}
/********** End *********/
}
}
声明
本⽂内容仅供参考。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论