用字节流拷贝时,定义一个 1024 长度的字节数组作为缓冲区,使用字符流拷贝。 86---87. 自定义一个图书馆借书的异常类 NoBookException(继承 Exception,类中有一个接收 String 类型参数的构造方法,使用 super 关键字调用父类的构造方法。)和 Borrower 类,在 Borrower 的 borrow()方法中使用自定义异常,要求入下: 1) Borrower 类中定义一个 borrow(int index)方法,方法接收一个 int 类型的参数,表示借书的索引, 当 index>25 时,borrow()方法用 throw 关键字抛出 NoBookException 异常,创建异常对象时,调用有 参的构造方法,传入“无此书”。 2)在测试类中创建Borrower 对象,并调用borrow()方法测试 NoBookException异常,使用 try…catch 语句捕获异常,调用 NoBookException 类的 getMessage()方法打印出异常信息
时间: 2024-03-25 08:39:58 浏览: 75
好的,我先来回答第一个问题:
使用字节流拷贝时,可以定义一个 1024 长度的字节数组作为缓冲区,然后使用 FileInputStream 和 FileOutputStream 类的 read() 和 write() 方法进行拷贝操作。具体代码如下:
```java
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
```
使用字符流拷贝时,也可以定义一个 1024 长度的字符数组作为缓冲区,然后使用 FileReader 和 FileWriter 类的 read() 和 write() 方法进行拷贝操作。具体代码如下:
```java
FileReader fr = new FileReader(srcFile);
FileWriter fw = new FileWriter(destFile);
char[] buffer = new char[1024];
int len;
while ((len = fr.read(buffer)) != -1) {
fw.write(buffer, 0, len);
}
fr.close();
fw.close();
```
这样可以提高拷贝的效率,减少 I/O 操作的次数。
接下来,我来帮你写第二个问题的代码:
```java
public class NoBookException extends Exception {
public NoBookException(String message) {
super(message);
}
}
public class Borrower {
public void borrow(int index) throws NoBookException {
if (index > 25) {
throw new NoBookException("无此书");
}
// borrow book here
}
}
public class Test {
public static void main(String[] args) {
Borrower borrower = new Borrower();
try {
borrower.borrow(26);
} catch (NoBookException e) {
System.out.println(e.getMessage());
}
}
}
```
在 Borrower 类的 borrow() 方法中,如果 index 大于 25,就会抛出 NoBookException 异常,并且传入异常信息“无此书”。在测试类中,我们创建了一个 Borrower 对象,并调用了它的 borrow() 方法,并使用 try...catch 语句捕获了 NoBookException 异常,并调用了 getMessage() 方法打印出异常信息“无此书”。
阅读全文