java - 在文件读取期间强制 IOException

标签 java junit ioexception

我有一段从文件中读取数据的代码。我想在此代码中强制 IOException 用于测试目的(我想检查代码在这种情况下是否抛出正确的自定义异常)。

例如,有什么方法可以创建一个防止被读取的文件?也许处理一些安全检查会有所帮助?

请注意,传递不存在文件的名称无济于事,因为 FileNotFoundException 有一个单独的 catch 子句。

这是为了更好地理解问题的一段代码:

    BufferedReader reader = null;
    try {

        reader = new BufferedReader(new FileReader(csvFile));

        String rawLine;
        while ((rawLine = reader.readLine()) != null) {
            // some work is done here
        }

    } catch (FileNotFoundException e) {
        throw new SomeCustomException();
    } catch (IOException e) {
        throw new SomeCustomException();
    } finally {
        // close the input stream
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                // ignore
            }
        }
    }

最佳答案

免责声明 : 我没有在非Windows平台上测试过这个,所以在不同文件锁定特性的平台上可能会有不同的结果。

如果事先锁定文件,则可以在尝试读取文件时触发 IOException:

java.io.IOException: The process cannot access the file because another process has locked a portion of the file

即使您在同一线程中,这也有效。

这是一些示例代码:
final RandomAccessFile raFile = new RandomAccessFile(csvFile, "rw");
raFile.getChannel().lock();

关于java - 在文件读取期间强制 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566755/

相关文章:

Java输入: Scanner or IOException

java - 无法通过代理建立隧道。代理返回 HTTP/1.1 503 服务不可用

java - web.xml 中的属性不起作用 eclipse kepler

java - 如何知道用 Try/Catch block 捕获什么

java - jUnit 用于文件读取器

java - 如何从 junit 中的 java 扩展文件中读取和测试类?我怎样才能访问该类进行测试?

java - IOException - 详细消息所有问号

java - 使 Swagger 在生成的模型中使用原始 int 和 boolean

java - org.apache.jasper.JasperException : java. lang.NullPointerException:找不到模块 'null'

android - Espresso - 检查 ListView 中是否存在 TextView