繁体   English   中英

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

[英]How to modify text of a text-file which is read using FileInputStream

我必须使用一种签名如下的方法

aMethod(FileInputStream);

我这样叫那个方法

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

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

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

我是InputStream菜鸟。 请指教。

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

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

这可能会有所帮助。 它将获取您的.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();
    }
}

您是否看过另一个类FilterInputStream ,它也扩展了InputStream以满足您的需求? 从课程文档

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

也看一下这个问题,它似乎也与您的问题相似。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM