【问题标题】:How to modify text of a text-file which is read using FileInputStream如何修改使用 FileInputStream 读取的文本文件的文本
【发布时间】:2013-02-05 16:43:06
【问题描述】:

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

aMethod(FileInputStream);

我这样称呼那个方法

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

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

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

我是 InputStream 菜鸟。请指教。

【问题讨论】:

    标签: java text file-io


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 无需新建文件直接将字符串转换为输入流
      • 但是他想在初始文件被读入之前删除某些字符。
      • 我想他不想编辑文件;只需在将输入提供给 aMethod() 之前修改输入
      • Techmonk,你没看错。对不起,简,如果问题有点令人困惑。感谢你们俩的精彩回答。测试后我会回来接受答案。
      【解决方案3】:

      您是否查看过另一个类FilterInputStream,它也扩展了InputStream,它可能符合您的要求? 来自类的文档

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

      还可以查看this 问题,该问题似乎也与您的问题相似。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 2012-02-27
        • 2015-06-22
        • 2016-08-28
        • 2010-09-12
        相关资源
        最近更新 更多