簡體   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