1

I have the following directory server/auth/usernames.txt and i want to read all lines and find a specific index of the string called clientusername

I have the following piece of code

File dirFile = new File("auth/");
String clientUsername ="john";
int indexUsername = Files.readAllLines(Paths.get(dirFile.getAbsolutePath() + "usernames.txt")).indexOf(clientUsername);

but this gives me the full path of server/auth/usernames.txt. I want only to get auth/usernames.txt. How to achieve this?

2 Answers 2

1

Change dirFile.getAbsolutePath() to dirFile.toPath()

Sign up to request clarification or add additional context in comments.

Comments

0
public static void main(String[] args) {
    File f = new File("path-to-your-file-on-your-system!");
    System.out.println(getLineNumber("SlimShady", f));
    System.out.println(getLineNumber("Eminem", f));
    System.out.println(getLineNumber("MomsSpaghetti", f));
    System.out.println(getLineNumber("doodoodoodoo....doooooooooo...dooooooo...can't touch this!", f));

}

private static int getLineNumber(String userName, File usernameFile) {
    boolean found = false;
    int lineCount = -1;
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(usernameFile)))) {            
        String line;
        while ((line = reader.readLine()) != null && !found) {
            ++lineCount; // increment and get (start at 0)
            found = line.trim().equals(userName); // found it?
        }
    } catch (IOException ex) {
        Logger.getLogger(TestMain.class.getName()).log(Level.SEVERE, null, ex);
    }
    if (!found) {
        // we didn't find it... return -1 (an impossible valid value) to handle that scenario.
        lineCount = -1;
    }
    return lineCount; // found it, what line?
    
}

And running it with only Eminem-related usernames in my totally made-up usernames file (we get a -1 for MC Hammer... apparently we still can't touch this.

run:
1
0
2
-1
BUILD SUCCESSFUL (total time: 0 seconds)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.