0

我必须使用签名是这样的方法

aMethod(FileInputStream);

我这样称呼那个方法

FileInputStream inputStream = new FileInputStream(someTextFile);
aMethod(inputStream);

我想删除/编辑一些从 someTextFile 中读取的字符,然后再将其传递给aMethod(inputStream);

我无法更改 aMethod 的签名或重载它。而且,它只需要一个 InputStream。如果方法将字符串作为参数,那么我不会问这个问题。

我是 InputStream 菜鸟。请指教。

4

3 回答 3

2

您可以将字符串转换为输入流

String str = "Converted stuff from reading the other inputfile and modifying it";
InputStream is = new ByteArrayInputStream(str.getBytes());
于 2013-02-05T16:51:36.347 回答
1

您是否查看过另一个可能符合您要求的FilterInputStream扩展类?InputStream从类的文档

FilterInputStream 包含一些其他输入流,它用作其基本数据源,可能沿途转换数据或提供附加功能。

另请查看this question,它似乎也与您的问题相似。

于 2013-02-05T17:24:02.190 回答
1

这可能会有所帮助。它会抓取你的 .txt 文件。然后它将加载它并逐行遍历。您必须填写评论区域才能做您想做的事。

 public void parseFile() {
    String inputLine;
    String filename = "YOURFILE.txt";
    Thread thisThread = Thread.currentThread();
    ClassLoader loader = thisThread.getContextClassLoader();
    InputStream is = loader.getResourceAsStream(filename);
    try {
        FileWriter fstream = new FileWriter("path/to/NEWFILE.txt");
        BufferedWriter out = new BufferedWriter(fstream);
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(is));
        while((inputLine = reader.readLine()) != null) {

            String[] str = inputLine.split("\t");
            if(/* IF WHAT YOU WANT IS IN THE FILE ADD IT */) {
                // DO SOMETHING OR ADD WHAT YOU WANT
                out.append(str);
                out.newLine();
            }
        }
        reader.close();
        out.close();
    } catch (Exception e) {
        e.getMessage();
    }
}
于 2013-02-05T16:51:47.800 回答