簡體   English   中英

無法用Java打印出一套

[英]Can not print out a set in Java

我正在編寫一個程序,該程序可以讀取兩個文本文件並找到差異,但是由於某些原因,我無法打印結果集。 我檢查了很多次,但仍然找不到原因,希望你們能幫幫我。 這是代碼。

每個打印組都會出現問題。

    import java.io.*;
    import java.util.*;

    public class PartOne {


    public static void readFileAtPath(String filePathOne, String filePathTwo) {
        // Lets make sure the file path is not empty or null
        if (filePathOne == null || filePathOne.isEmpty()) {
            System.out.println("Invalid File Path");
            return;
        }

        if (filePathTwo == null || filePathTwo.isEmpty()) {
            System.out.println("Invalid File Path");
            return;
        }

        Set<String> newUser = new HashSet<String>();
        Set<String> oldUser = new HashSet<String>();

        BufferedReader inputStream = null;
        BufferedReader inputStream2 = null;
        // We need a try catch block so we can handle any potential IO errors
        try {
            // Try block so we can use ‘finally’ and close BufferedReader
            try {
                inputStream = new BufferedReader(new FileReader(filePathOne));
                inputStream2 = new BufferedReader(new FileReader(filePathTwo));

                String lineContent = null;
                String lineContent2 = null;

                // Loop will iterate over each line within the file.
                // It will stop when no new lines are found.
                while ((lineContent = inputStream.readLine()) != null) {
                    // Here we have the content of each line.
                    // For now, I will print the content of the line.
                    // System.out.println("Found the line: " + lineContent);
                    oldUser.add(lineContent);
                }

                while ((lineContent2 = inputStream.readLine()) != null) {
                    newUser.add(lineContent2);
                }

                Set<String> uniqueUsers = new HashSet<String>(newUser);
                uniqueUsers.removeAll(oldUser);

            }
            // Make sure we close the buffered reader.
            finally {
                if (inputStream != null)
                    inputStream.close();
                if (inputStream2 != null)
                    inputStream2.close();
            }


            for (String temp : uniqueUsers) {
                 System.out.println(temp);
             }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }// end of method

    public static void main(String[] args) {
        String filePath2 = "userListNew.txt";
        String filePath = "userListOld.txt";
        readFileAtPath(filePath, filePath2);

    }
}

您的問題是范圍。 您可以在try塊中定義該集合,然后嘗試從該塊外部訪問它。 您必須在要使用該變量的相同范圍內定義所有變量。

將uniqueUsers的定義移至try塊之前。

*根據您的評論進行編輯。

您正在從同一輸入流中讀取兩次。 第二個while循環應該從inputStream2中讀取。

嘗試這個

 try {
    // Try block so we can use ‘finally’ and close BufferedReader
    try {
        inputStream = new BufferedReader(new FileReader(filePathOne));
        inputStream2 = new BufferedReader(new FileReader(filePathTwo));

        String lineContent = null;
        String lineContent2 = null;

        // Loop will iterate over each line within the file.
        // It will stop when no new lines are found.
        while ((lineContent = inputStream.readLine()) != null) {
            // Here we have the content of each line.
            // For now, I will print the content of the line.
            // System.out.println("Found the line: " + lineContent);
            oldUser.add(lineContent);
        }

        while ((lineContent2 = inputStream.readLine()) != null) {
            newUser.add(lineContent2);
        }

        Set<String> uniqueUsers = new HashSet<String>(newUser);
        uniqueUsers.removeAll(oldUser);

        for (String temp : uniqueUsers) {
         System.out.println(temp);
        }

    }
    // Make sure we close the buffered reader.
    finally {
        if (inputStream != null)
            inputStream.close();
        if (inputStream2 != null)
            inputStream2.close();
    }        

} catch (IOException e) {
    e.printStackTrace();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM