0

Okay, so I'm having problems with my code. I've browsed Daniweb and couldn't find any solutions on here that work.

I'm extracting 2 sets of texts from a .xml file. The first part is a directory name(eg. "C:\work\") and the second part is the name of a file in that directory.

I concatenate the 2 strings and then test it against a filename checker.

The exception I get is this:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
C:\Thread test\P1\kk.txt

The relevant code is here(I've highlighted the line that throws the exception):

public static void main(String[] args) {

        while (true) {
            // Call scan() method
            new ThreadStarter().scan();
        }

    }

    void scan() {
        System.out.println("starting scanning");

        // Go through the list of priority Dir's first, then the normal dirs.
        for (int i = 0; i < priorityDirs.length; i++) {
            String used = location + priorityDirs[i];
            filePickup(used, true);
        }
    }

    public static class FilenameFilterRegex implements FilenameFilter {

        String strRegex = "";

        public boolean accept(File dir, String name) {
            //return Pattern.matches(".*\\.(jpg|jpeg|gif|png|bmp)", name);
            //if only one extension to check :  "\\.jpg"
            [B]return Pattern.matches(strRegex, name);[/B]
        }

        public void aregex(String straRegex) {
            strRegex = straRegex;
            //return (strRegex);
        }
    }

    void filePickup(String dir, boolean bool) {
        try {
            // Scan for files
            File main_dir = new File(dir);

            File[] children = main_dir.listFiles();

            // Checks if files were found
            if (children.length > 0) {
                for (int ii = 0; ii < children.length; ii++) {
                    // Make sure only files are scanned in, not directories, etc.
                    if (children[ii].isFile()) {
                        // Get fileName, call Threader in Threader, send fileName
                        String fileName = children[ii].getAbsolutePath();
                        FilenameFilterRegex FF = new FilenameFilterRegex();
                        FF.aregex(fileName);
                        File file = new File("");

                        if (FF.accept(file, fileName)) {
                                    // Start a thread count
                                    new Thread(new Threader(this, fileName, 1)).start();
                        }
                    }
                }
            }
        } catch (InterruptedException ie) {
            ie.printStackTrace();
        }
    }

Can anyone please tell me what the problem is?

I don't know whats causing the error, and pasting the exception itself in Google just gives me vague answers.

If someone could clarify the problem for me I'd be extremely grateful.

2
Contributors
2
Replies
4
Views
6 Years
Discussion Span
Last Post by P00dle
Featured Replies
  • 1

    replace all single slants with double slants before (or while) calling "aregex". [code]str.replace("\\", "\\\\")[/code] note: replace, [i]not[/i] replaceFirst or replaceAll. Read More

1

replace all single slants with double slants before (or while) calling "aregex".

str.replace("\\", "\\\\")

note: replace, not replaceFirst or replaceAll.

0

Lol... That solved it.

I was using

str.replaceAll("\\", "\\\\");

earlier and it didn't work.

Never thought to just use .replace

Thank you.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.