Java文件的读取和写入属于java的基础知识,也是软件构造实验遇到的第一个问题。
1 文件的读取
1.1 单纯字符的读入——FileReader
我们选择FileReader.read()函数。
此方法比较适合读取一段单纯的字符串。
char[] string=new char[100];//建一个数组储存字符
FileReader fr = new FileReader("text.txt");//打开文件
while((fr.read(string))!=-1) {
//String(char[] cbuf,a,num),从cbuf的位置a开始取出连续的num个字符
System.out.println(new String(string,0,num));
}
for(int i=0;i<10;i++) {
System.out.print(string[i]);
}
读取文件路径可以有两种方式:绝对路径和相对路径
绝对路径:比如”C:\Users\Desktop\text.txt",可以通过文件属性获取
相对路径:比如"src\……"即文件相对src的位置,以eclipse为例很容易就能通过左栏获取。
1.2 整行读入——BufferedReader
可以用.readLine()逐行读取
int position=0;
String[] bufstring=new String[1024];//建立一个String数组存放每一行的字符串
BufferedReader br = new BufferedReader(new FileReader("text.txt"));//打开文件
String line=null;
while((line=br.readLine())!=null) {
bufstring[position]=line;
position++;
}
br.close();//关闭文件
for(int i=0;i<position;i++) {
System.out.println(bufstring[i]);
}
注:其实每一次读取文件的时候会伴随文件是否存在的异常处理,可以选择try-catch的环绕,也可以throw IOException
当然,try-catch及时处理异常情况更为推荐
比如:
try {
br = new BufferedReader(new FileReader(file));
while ((str = br.readLine())!= null) {
listStr.add(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
1.3 处理分隔符
1.3.1 遍历到分隔符截断
//读取字符串
ArrayList<String>stringlist=new ArrayList();//储存待读取的字符串
FileReader fr = new FileReader("text.txt");
while((num=fr.read(buf))!=-1) {
System.out.println(new String(buf,0,num));;
}
//分割字符串
String temp="";
for(int i=0;i<buf.length;i++) {
if(buf[i]==',') {
stringlist.add(temp);
temp="";
}else {
temp+=buf[i];
}
}
1.3.2 采用.split()方法
//读取文件
FileReader reader=new FileReader(file);
BufferedReader bReader= new BufferedReader(reader);
StringBuilder sb= new StringBuilder();
String s;
while((s=bReader.readLine())!=null) {
sb.append(s+"\n");
}
bReader.close();
//处理字符串
String str=sb.toString();
String[]line=str.split("\n");//存放每行的内容
String[][] Map=new String[line.length][];
//分割成字符串类型矩阵并判断正则数
for(int r=0;r<line.length;r++) {
Map[r] = line[r].split("\t"); //用\t分割字符串
2 文件的写入
将一个二维矩阵写入文件:
File file=new File("src\\P1\\txt\\6.txt");
Writer out=new FileWriter(file);
for(int x=0;x<n;x++) {
for(int y=0;y<n;y++) {
out.write(magic[x][y]+"\t");
}
out.write("\n");
}
out.close();
参考:
https://blog.csdn.net/Alexwym/article/details/81078417?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task