如何修改使用FileInputStream读取的文本文件的文本

时间:2013-02-05 16:43:06

标签: java text file-io

我必须使用一个签名就像这样的方法

aMethod(FileInputStream);

我称这种方法为

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

我想删除/编辑从someTextFile读取的一些char,然后将其传递到aMethod(inputStream);

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

我是InputStream noob。请指教。

3 个答案:

答案 0 :(得分:1)

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

String str = "Converted stuff from reading the other inputfile and modifying it";
InputStream is = new ByteArrayInputStream(str.getBytes());

答案 1 :(得分: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();
    }
}

答案 2 :(得分:1)

您是否查看了另一个课程FilterInputStream,该课程还扩展了InputStream,可能符合您的要求? 从课程的文档

  

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

另请查看this问题,该问题似乎与您的问题类似。