java中super不能作为构造函数第一行的解决方案

2024-01-12

我正在使用 CSVReader 类,该类将本地文件作为输入。但现在,我需要能够读取本地文件以及具有 URL 路径的文件(例如http://example.com/example.txt http://example.com/example.txt)。为此,我想从 CSVReader 派生一个类,用于标识文件是本地文件还是 URL,然后在构造函数的第一行中使用 super() 将 InputStream 传递给父级。这样做的优雅方法是什么?

public class FileReader extends CsvReader{
    public FileReader(){
        if (fileName != null) {

               if (fileName.trim().startsWith("http:")) {
                // it is URL
                URL url = new URL(fileName);
                inputStream = new BufferedReader(new InputStreamReader(
                        url.openStream(), charset),
                        StaticSettings.MAX_FILE_BUFFER_SIZE); 
               }else{
                //it is a local file
                inputStream = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileName), charset),
                        StaticSettings.MAX_FILE_BUFFER_SIZE);
               } 

            }
            //Now pass the input stream to CsvReader
            super(inputStream, delimiter, charset);  //error - super has to be first line of constructor
    }
}

您可以编写辅助方法:

super(createReader(createInputStream(resouce), "UTF-8"), ";");

您的辅助方法可能如下所示:

public static InputStream createInputStream(String resource)
{
     resource = resource.trim();

     if (resource.startsWith("http:"))
     {
          return new URL(resource).openStream();
     } else
     {
          return new FileInputStream(new File(resource));
     }
}

public static BufferedReader createReader(InputStream is, String charset)
{
     return new BufferedReader(new InputStreamReader(is, charset));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中super不能作为构造函数第一行的解决方案 的相关文章

随机推荐

  • 作为期限或值计算结果的返回类型

    我试图很好地掌握种类 类型和术语 或值 不确定哪个是正确的 以及用于操作它们的 GHC 扩展 我知道我们可以使用 TypeFamilies 来编写带有类型的函数 现在我们还可以使用 DataKinds PolyKinds 等在某种程度上操作
  • 如果我想在 React 中使用像 AOS 这样的 javascript 库,该怎么做?

    我想使用 JavaScript 库 AOS https michalsnik github io aos https michalsnik github io aos 在我的 React 应用程序中 如何将其包含在我的 App js 文件中
  • javascript多维对象

    我正在尝试使用以下代码在 JavaScript 中定义一个多维对象 function A one two this one one this inner two two A prototype one undefined inner two
  • 同一页面上有两个 jQuery 版本

    是否可以在同一个文档中拥有 2 个不同的 jQuery 版本 并且让它们不会相互冲突 例如 如果我创建一个小书签并希望将代码基于 jQuery 这个小书签被注入到使用另一个版本的 jQuery 的某个页面上 然后我的代码将覆盖该页面上使用的
  • HTML5 浏览器兼容性图表 - 旧浏览器中的 HTML5?

    我刚刚开始考虑在 Rails JQuery 项目中使用 HTML 5 api 所以我可以使用这个很棒的data 属性 http ejohn org blog html 5 data attributes 来存储值 但我担心浏览器兼容性问题
  • HTML5 异步属性对脚本元素到底有什么好处?

    我对 HTML5 中 script 元素的新 async 属性有些困惑 希望有人能给出明确的答案 浏览器能够并行连接 因此图像将并行下载 但任何外部 javascript 都不会与其他外部 javascript 和图像并行下载 脚本会阻止页
  • 如何使用 URL 调用 Web 服务并传递参数

    如何使用 URL 调用 ASP NET Web 服务并传递参数 例如 服务的 URL 类似于 http localhost 31856 MySystem MyAPI asmx op getHeight 我需要传递两个参数a和b 我尝试过 h
  • Android Studio 布局编辑器不显示任何建议

    我创建了新的 XML 文件temp xml 当我尝试在其中添加文本视图时 没有向我显示任何建议 当我单击 TextView 时 添加的 TextView 没有正文 然后我从其他文件复制粘贴一些代码 并尝试向 TextView 编辑器提供大小
  • 加载规则“jsx-a11y/alt-text”时出错:rule.create 不是函数

    我刚刚用过npx create react app my app启动一个项目并在运行时npm start我收到这个编译错误 Error while loading rule jsx a11y alt text rule create is
  • UTF8 到 php 中的等效数字

    我一直在寻找我的 试图找到一个 PHP 函数来将 UTF8 转换为等效的数字 我不完全确定如何称呼这个数字 我听说它被称为纵坐标 但这里有一个例子 http jrgraphix net r Unicode 3040 309F http jr
  • 继承最派生类型的抽象类

    不幸的是 我找不到导致我提出这个问题的原始项目 这也许会给这个问题更多的背景 EDIT 我找到了我在其中看到的原始项目 http mews codeplex com SourceControl changeset view 63120 10
  • SAP Hana 开发中的 OData 与 XSJS

    我正在使用 SAP Hana studio 开发一个应用程序 我对为什么要使用 XSODATA 以及为什么要使用 XSJS 感到困惑 为什么我不能仅使用 XSODATA 文件来执行所有数据库事务 我知道 XSJS 是服务器端的 但如果我正在
  • HQL“包含”声明如何?

    我有一个实体 它有一个名为 标签 的字符串属性 我想根据某个字符串是否位于 Tags 属性中来查询该实体 例如 我有一个函数 IList GetEntityByTag string tag 这将返回 Tags 属性中具有标签值的所有实体 我
  • github markdown colspan

    有没有办法有 colspan on github 降价 我正在尝试创建一个表格 其中一行占据四列 One Two Three Four One Two Three Four One Two Three Four
  • 使用 linq 解析样式属性集合

    我想解析 SVG 样式属性 它只是一个分隔字符串 例如 填充 e2b126 描边 010101 描边宽度 0 3177 描边斜接限制 10 into a Dictionary
  • Kendo UI 上的 Angular DatePicker 验证不起作用

    我正在尝试在 Angular DatePicker 的 Kendo UI 上使用表单验证 但它似乎不起作用 我正在对所有其他表单元素执行以下操作 div class form group row div
  • 在指定的时间内运行函数:C++ with [重复]

    这个问题在这里已经有答案了 我需要实现一个函数 该函数应该在指定的时间内执行指定的任务 该任务作为参数传递给它 std chrono milliseconds 我想出了代码 void Run std chrono milliseconds
  • 在项目属性中找不到 C/C++

    我正在遵循一个教程 其要求的步骤之一是转到我的项目属性并单击 c c 并添加 其他包含目录 属性的路径 我使用的是 Visual C Express Edition 2008 教程使用的是相同的东西 有没有办法得到这个或替代品 This i
  • 关于C语言中free()的问题[重复]

    这个问题在这里已经有答案了 可能的重复 free 和 malloc 在 C 中如何工作 https stackoverflow com questions 1957099 how do free and malloc work in c 在
  • java中super不能作为构造函数第一行的解决方案

    我正在使用 CSVReader 类 该类将本地文件作为输入 但现在 我需要能够读取本地文件以及具有 URL 路径的文件 例如http example com example txt http example com example txt