本关任务:使用输入输出流读写文件。
读取src/step2/input/目录下的task.txt文件信息并输出到控制台,使用Java代码将字符串learning practice写入到src/step2/output/目录下的output.txt,若文件目录不存在,则创建该目录。
注意:临时字节数组需要定义长度为8位,否则会有空格。
package step2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.*;
public class Task {
public void task() throws IOException{
File file=new File("src/step2/input/task.txt");
FileInputStream fis=new FileInputStream(file);
byte[] bytes=new byte[8];
fis.read(bytes);
String str=new String(bytes,"utf-8");
System.out.println(str);
String s="learning practice";
File src_f=new File("src/step2/output");
if(!src_f.exists())
src_f.mkdirs();
File f=new File("src/step2/output/output.txt");
FileOutputStream out=null;
try{
f.createNewFile();
String fe="src/step2/output//output.txt";
out=new FileOutputStream(f);
byte[] b=s.getBytes();
out.write(b);
out.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!= null){
try{
out.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args)throws IOException{
Task t=new Task();
t.task();
}
}
Java异常机制用到的几个关键字:try、catch、finally、throw、throws。
try -- 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
catch -- 用于捕获异常。catch用来捕获try语句块中发生的异常。
finally -- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
throw -- 用于抛出异常。
throws -- 用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行
Error:指的是JVM错误,这时的程序并没有执行,无法处理;
Exception:指的是程序运行中产生的异常,用户可以使用处理格式处理。