Search a dir/sub dirs for specfic string in txt files

I was wondering if anyone knew of any un-copyrighted, published code that would take a directory as the 'root' and search all text files within all subdirs for a particular string.
Or if anyone know of a pretty simple solution. I am new to Java =P
Or, if you could just tell me how to get a dir's contents and any java-provided search utils, I'd appreciate it.
Thanks

http://lucene.apache.org

Similar Messages

  • How to search a special string in txt file and return it's position in txt file?

    How to search a special string in txt file and return it's position in txt file?

    I just posted a solution for a similar question here:  http://forums.ni.com/ni/board/message?board.id=170​&view=by_date_ascending&message.id=362699#M362699
    The top portion can search for the location of a string, while the bottom portion is to locate the position of a character.  Both can search for a character.
    The position of the character within the file is displayed in the indicator(s).
    R

  • I need autocomplete  for search for words in a txt. file

    i am not so good in java.
    I have a running code for search in text with a txt. file (from user bluefox815).
    But I need a solution with autocomplete for search for words in a txt. file.
    test_file.txt (Teil des Inhaltes):
    Roboter robots
    Mechatronik mechatronics
    and so on
    Can you help me please.
    Here is the code:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    * this program searches for a string in a text file and
    * says which line it found the string on
    public class SearchText implements ActionListener {
    private String filename = "test_file.txt";
    private JFrame frame;
    private JTextField searchField;
    private JButton searchButton;
    private JLabel lineLabel;
    private String searchFor;
    private BufferedReader in;
    public SearchText() {
    frame = new JFrame("SearchText");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    searchField = new JTextField(80);
    searchButton = new JButton("Search");
    // this is used later in our actionPerformed method
    searchButton.setActionCommand("search");
    // this sets the action listener for searchButton, which is the current class
    // because this class implements ActionListener
    searchButton.addActionListener(this);
    lineLabel = new JLabel("nach dem Fachbegriff suchen");
    public void createGUI() {
    JPanel topPanel = new JPanel();
    topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS));
    JPanel bottomPanel = new JPanel();
    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
    topPanel.add(searchField);
    topPanel.add(searchButton);
    bottomPanel.add(lineLabel);
    mainPanel.add(topPanel);
    mainPanel.add(bottomPanel);
    frame.getContentPane().add(mainPanel);
    frame.pack();
    frame.setVisible(true);
    public void actionPerformed(ActionEvent e) {
    // now we get the action command and if it is search, then it is the button
    if ("search".equals(e.getActionCommand())) {
    searchFor = searchField.getText();
    searchTheText();
    private void searchTheText() {
    // I initialize the buffered reader here so that every time the user searches
    // then the reader will start at the beginning, instead of where it left off last time
    try {
    in = new BufferedReader(new FileReader(new File(filename)));
    } catch (IOException e) {
    String lineContent = null;
    int currentLine = 0;
    // this will be set to true if the string was found
    boolean foundString = false;
    while (true) {
    currentLine++;
    // get a line of text from the file
    try {
    lineContent = in.readLine();
    } catch (IOException e) {
    break;
    // checks to see if the file ended (in.readLine() returns null if the end is reached)
    if (lineContent == null) {
    break;
    if (lineContent.indexOf(searchFor) == -1) {
    continue;
    } else {
    lineLabel.setText(String.valueOf(lineContent));
    foundString = true;
    break;
    if (!foundString)
    lineLabel.setText("Es kann kein Fachbegriff gefunden werden.");
    try {
    in.close();
    } catch (IOException ioe) {
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    new SearchText().createGUI();
    }

    Markus1 wrote:
    But I need a solution with autocomplete for search for words in a txt. file.What is your question? What have you tried so far? What are you having difficulty with?
    Mel

  • Remove string from txt file

    Hello guys,
    I need some help. I have to remove some content of Tolerance "column" (see attach). The string which I wish to remove is "+/- 0s" and replace it with an empty string. I need to remove this for each row where "+/- 0s" appears.  
    Thanks
    Solved!
    Go to Solution.
    Attachments:
    sample.txt ‏3 KB

    Hi Samoth,
    I dont know if I understood your requirement properly, but please check the attached snippet if it helps.
    If this does not satisfy your requirement, then please give some more details.
    Attachments:
    Remove string from txt file.png ‏21 KB

  • Searching for a string within a file

    In control panel \ folder options \ search tab  I've selected "always search file names and conents (this might take several minutes).  and under "how to search" I have checked all 4 boxes.     Yet, when I search a folder
    and all sub-folders for a file containing a string Windows 7 finds nothing.  in XP this worked perfectly.  How do you search like this in Windows 7?   I actually had to write a PowerShell script that does the search for me and I thought Windows
    7 could do this by default but I guess not?!?!?
    mqh7

    Hello mqh7.
    You can use the find command from the Windows 7 command prompt window.
    Open a command prompt window and run find /? to have more informations about the command syntax or read the command documentation available
    here in TechNet Library.
    Bye.
    Luigi Bruno
    MCP, MCTS, MOS, MTA

  • Search for a String in a File?

    hi all
    is there a methid in java with which i can open a file and
    search for a specified string in the file? i also have to
    replace the String then.
    Thanks angela

    There is no magic method that can do all this for you. First you need to create an inputstream from the file you want to read. Then you can read it (without necessarily store the whole file in memory), until you find a match. If you want to replace the string with another string of the same length, you can use RandomAccessFile. If not, then you will have to move all the rest of the file forward or backwards when you replace the string, or write the whole file modified to a new file and then delete the old file before you rename the new updated file.
    Or you can depending on what you do, append changes to the end of the file, more or less like what is done with Word documents. And then only once in a while update the file with all the appended changes.

  • How to recognize string in txt file and set it as variable

    Hi, 
    I have txt file and somwhere in it string starting with:
    data directory....:
    How (using batch file) find it in the text, read and set the value as a variable? I mean the string is:
    data directory....: c:\datadir
    where what I mean value is  in this case "c:\datadir". So I want batch file to read the txt file, find string starting with "data directory....:" and then set "c:\datadir" as a variable. 
    Best, mac

    It's not very intuitive to do this sort of thing in a batch file. If you have the option to use PowerShell instead, I'd highly recommend it. It's the new way for performing command-line tasks in Windows, and there's no need to struggle with the old command
    prompt anymore.
    Here are PowerShell and batch examples of doing this type of string parsing:
    # PowerShell:
    $dataDirectory = Get-Content .\test.txt |
    ForEach-Object {
    if ($_ -match '^\s*data directory\.*:\s*(.+?)\s*$')
    $matches[1]
    break
    $dataDirectory
    # Batch file:
    @echo off
    setlocal EnableDelayedExpansion
    set DATA_DIRECTORY=
    for /F "tokens=1,* delims=:" %%a in (test.txt) do (
    set PROPERTY=%%a
    set PROPERTY=!PROPERTY:~0,14!
    if /I "!PROPERTY!" equ "data directory" (
    set DATA_DIRECTORY=%%b
    :RemovingSpaces
    if "%DATA_DIRECTORY:~0,1%" neq " " goto :SpacesRemoved
    set DATA_DIRECTORY=%DATA_DIRECTORY:~1%
    goto :RemovingSpaces
    :SpacesRemoved
    echo %DATA_DIRECTORY%
    endlocal

  • Is it possible to select multiple files on the W8.1U1's SEARCH RESULTS window page? For instance, if 10 CPP files are found by the seraching mechanism, can I select all 10 files and have them open in Visual Studio at once?

    TIA.

    Brandon, this forum member is known since a long time ago an arrogant (he thinks he knows more than every other) and stupid(*) (full of misconceptions). His first post is a very good example of what I just wrote. How does he dare to suggest to use File
    Explorer, if W8.1 already has a system built for doing just this search?  Do I have to open File Explorer in the folder (or somewhere near) the item I'm looking for? What about the other items in folders above it? This suggestion is stupid(*). He even
    asserts that I'm using Modern UI! I'm not! I'm using the desktop, but his misconceptions make him write such idiocies(*) with such arrogance: asserting what he doesn't know (arrogancy and stupidity). And more, this guy is no one to say he/he/he to me, because
    I know he is what you deleted from my posts, and more, he is often crying, moaning and snivelling like a spoiled child in this forum and messing up any thread posting stupid(*) images of programs imagined/designed/developed by others. All posts from him in
    this thread must be trashed (you should do it). He has nothing to contribute POSITIVELY in this thread, but just to MESS IT UP.
    (*) stupid, I can write, after all, you didn't delete this word from this ... poster.
    Now, look at the first reply: this forum member has no idea how much stupid is his 'work around'. And this 'work around' does not answer my question and even does address the environment I mentioned: W8.1 U1 search results window page, and not File Explorer!
    His second post just reassures me he has no idea what is the searching mechanism I'm talking about. He even mentions Win-w(!) which proves he totally ignore what is the searching mechanism I'm talking about. A user like this one, must have many monitors to
    keep him busy looking at them, and having excuses for not read and learn technical documentation. It's ignorance about technical aspects of computer issues that makes him post bad bug report and a bad idea in Connect site:
    Using Get-Date -Format "CyM" to work around some bugs
    https://connect.microsoft.com/PowerShell/feedback/details/884502/using-get-date-format-cym-to-work-around-some-bugs
    Only total ignorance about PowerShell makes someone post such bad 'bug' report. He got critics about his bad post, but I'm sure he doesn't understand.
    Column headers for alias should include DisplayName instead of just Name
    https://connect.microsoft.com/PowerShell/feedback/details/908152/column-headers-for-alias-should-include-displayname-instead-of-just-name
    In fact, the information displayed is already DisplayName, but this guy has no technical knowledge to understand what is happening.
    These 2 forum members just messed up a thread that should be free of negative contributions, besides off topic.

  • I need help for reading from a .txt file.

    My goal in this program is to display the data from the text file to the command prompt. Everything compiles, but its doesnt display the data.
    It probably has to do with my constructer. So help with revising the constructing would be appreciated. I am new to programming by the way.
    import java.util.*;
    import java.io.*;
         class Inventory
         public static void main(String[] args)
              final int MAX = 50;
              InventoryItem[] items = new InventoryItem[MAX];
              StringTokenizer tokenizer;
              String line;
              String name;
              String file = " inventory.txt ";
              int units = 0;
              int count = 0;
              float price;
              try
                   FileReader fr = new FileReader ("inventory.txt");
                   BufferedReader inFile = new BufferedReader(fr);
                   line = inFile.readLine();
                   while (line !=null)
                        tokenizer = new StringTokenizer (line);
                        name = tokenizer.nextToken();
                        try
                             units = Integer.parseInt(tokenizer.nextToken());
                             price = Float.parseFloat(tokenizer.nextToken());
                             items[count++] = new InventoryItem(name, units, price);
                        catch (NumberFormatException exception)
                             System.out.println("error in input.Line ignored:");
                             System.out.println(line);
                        line = inFile.readLine();
                   inFile.close();
                   for (int i = 0; i<count; i++)
                        System.out.println (items);
              catch (IOException exception)
                   System.out.println("The file " + file + "was not found.");
         } //end of main method
    }// end of Inventory class
    public class InventoryItem
         private String name;
         private int units;
         private float price;
         public InventoryItem (String nameOfItem, int numOfUnits, float priceOfItem)
              name = nameOfItem;
              units = numOfUnits;
              price = priceOfItem;

    Use CODE tags
    What's not printing?
                        try
    units =
    its = Integer.parseInt(tokenizer.nextToken());
    price =
    ice = Float.parseFloat(tokenizer.nextToken());
    items[count++] = new InventoryItem(name, units,
    nits, price);
                        catch (NumberFormatException exception)
    System.out.println("error in input.Line <========= THIS ???????
    .Line ignored:");
                             System.out.println(line); <============= AND THIS???
                        line = inFile.readLine();
                   inFile.close();
                   for (int i = 0; i<count; i++)
                        System.out.println (items); <========== THIS IS OK, right?
    If I have correctly indentified your problem, then the reason it's not printing is that your print statements are within a catch block, and evidently your code is not throwing any NumberFormatExceptions

  • How can I delete a dir which has sub-dir's ?

    Dear list,
    Can some one send me a link or send me a code example of how to delete all the sub- directories in a specified directory. My dir has sub-directories which contain files!
    If I use the java.io package I must loop all the sub- directories, and java.io.File.delete() wont delete a dir when it contains files, so I will have to go into each sub-dir and delete the files before deleting the sub-dir. This is going to be a lot of code, and YES ! I am a little lazy!
    Is there a java package, with a method, where I can just delete a dir, which just deletes it and ALL its contents ?
    regards
    BB

        // Delete an empty directory
        boolean success = (new File("directoryName")).delete();
        if (!success) {
            // Deletion failed
        }If the directory is not empty, it is necessary to first recursively delete all files and subdirectories in the directory. Here is a method that will delete a non-empty directory.     // Deletes all files and subdirectories under dir.
        // Returns true if all deletions were successful.
        // If a deletion fails, the method stops attempting to delete and returns false.
        public static boolean deleteDir(File dir) {
            if (dir.isDirectory()) {
                String[] children = dir.list();
                for (int i=0; i<children.length; i++) {
                    boolean success = deleteDir(new File(dir, children));
    if (!success) {
    return false;
    // The directory is now empty so delete it
    return dir.delete();

  • Script to search all files in specified folder for multiple string text values listed in a source file and output each match to one single results txt file

    I have been searching high and low for this one.  I have a vbscript that can successfully perform the function if one file is listed.  It does a Wscript.echo on the results and if I run this via command using cscript, I can output to a text file
    that way.  However, I cannot seem to get it to work properly if I want it to search ALL the files in the folder.  At one point, I was able to have it create the output file and appear as if it worked, but it never showed any results when the script
    was executed and folder was scanned.  So I am going back to the drawing board and starting from the beginning.
    I also have a txt file that contains the list of string text entries I would like it to search for.  Just for testing, I placed 4 lines of sample text and one single matching text in various target files and nothing comes back.  The current script
    I use for each file has been executed with a few hundred string text lines I want it to search against to well over one thousand.  It might take awhile, but it works every time. The purpose is to let this run against various log files in a folder and
    let it search.  There is no deleting, moving, changing of either the target folder/files to run against, nor of the file that contains the strings to search for.  It is a search (read) only function, going thru the entire contents of the folder and
    when done, performs the loop function and onto the next file to repeat the process until all files are searched.  When completed, instead of running a cscript to execute the script and outputting the results to text, I am trying to create that as part
    of the overall script.  Saving yet another step for me to do.
    My current script is set to append to the same results file and will echo [name of file I am searching]:  No errors found.  Otherwise, the
    output shows the filename and the string text that matched.  Because the results append to it, I can only run the script against each file separately or create individual output names.  I would rather not do that if I could include it all in one.
     This would also free me from babysitting it and running each file script separately upon the other's completion.  I can continue with my job and come back later and view the completed report all in one.  So
    if I could perform this on an entire folder, then I would want the entries to include the filename, the line number that the match occurred on in that file and the string text that was matched (each occurrence).  I don't want the entire line to be listed
    where the error was, just the match itself.
    Example:  (In the event this doesn't display correctly below, each match, it's corresponding filename and line number all go together on the same line.  It somehow posted the example jumbled when I listed it) 
    File1.txt Line 54 
    Job terminated unexpectedly
     File1.txt Line 58 Process not completed
    File1.txt
    Line 101 User input not provided
    File1.txt
    Line 105  Process not completed
    File2.txt
    No errors found
    File3.txt
    Line 35 No tape media found
    File3.txt
    Line 156 Bad surface media
    File3.txt Line 188
    Process terminated
    Those are just random fake examples for this post.
    This allows me to perform analysis on a set of files for various projects I am doing.  Later on, when the entire search is completed, I can go back to the results file and look and see what files had items I wish to follow up on.  Therefore, the
    line number that each match was found on will allow me to see the big picture of what was going on when the entry was logged.
    I actually import the results file into a spreadsheet, where further information is stored regarding each individual text string I am using.  Very useful.
    If you know how I can successfully achieve this in one script, please share.  I have seen plenty of posts out there where people have requested all different aspects of it, but I have yet to see it all put together in one and work successfully.
    Thanks for helping.

    I'm sorry.  I was so consumed in locating the issue that I completely overlooked posting what exactly I was needing  help with.   I did have one created, but I came across one that seemed more organized than what I originally created.  Later
    on I would learn that I had an error in log location on my original script and therefore thought it wasn't working properly.  Now that I am thinking that I am pretty close to achieving what I want with this one, I am just going to stick with it.
    However, I could still use help on it.  I am not sure what I did not set correctly or perhaps overlooking as a typing error that my very last line of this throws an "Expected Statement" error.  If I end with End, then it still gives same
    results.
    So to give credit where I located this:
    http://vbscriptwmi.uw.hu/ch12lev1sec7.html
    I then adjusted it for what I was doing.
    What this does does is it searches thru log files in a directory you specify when prompted.  It looks for words that are contained in another file; objFile2, and outputs the results of all matching words in each of those log files to another file:  errors.log
    Once all files are scanned to the end, the objects are closed and then a message is echoed letting you know (whether there errors found or not), so you know the script has been completed.
    What I had hoped to achieve was an output to the errors.log (when matches were found) the file name, the line number that match was located on in that file and what was the actual string text (not the whole line) that matched.  That way, I can go directly
    to each instance for particular events if further analysis is needed later on.
    So I could use help on what statement should I be closing this with.  What event, events or error did I overlook that I keep getting prompted for that.  Any help would be appreciated.
    Option Explicit
    'Prompt user for the log file they want to search
    Dim varLogPath
    varLogPath = InputBox("Enter the complete path of the logs folder.")
    'Create filesystem object
    Dim oFSO
    Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
    'Creates the output file that will contain errors found during search
    Dim oTSOut
    Set oTSOut = oFSO.CreateTextFile("c:\Scripts\errors.log")
    'Loop through each file in the folder
    Dim oFile, varFoundNone
    VarFoundNone = True
    For Each oFile In oFSO.GetFolder(varLogPath).Files
        'Verifies files scanned are log files
        If LCase(Right(oFile.Name,3)) = "log" Then
            'Open the log file
            Dim oTS
            oTS = oFSO.OpenTextFile(oFile.Path)
            'Sets the file log that contains error list to look for
            Dim oFile2
            Set oFile2 = oFSO.OpenTextFile("c:\Scripts\livescan\lserrors.txt", ForReading)
            'Begin reading each line of the textstream
            Dim varLine
            Do Until oTS.AtEndOfStream
                varLine = oTS.ReadLine
                Set objRegEx = CreateObject("VBScript.RegExp")
                objRegEx.Global = True  
                Dim colMatches, strName, strText
                Do Until oErrors.AtEndOfStream
                    strName = oFile2.ReadLine
                    objRegEx.Pattern = ".{0,}" & strName & ".{0,}\n"
                    Set colMatches = objRegEx.Execute(varLine)  
                    If colMatches.Count > 0 Then
                        For Each strMatch in colMatches 
                            strText = strText & strMatch.Value
                            WScript.Echo "Errors found."
                            oTSOut.WriteLine oFile.Name, varLine.Line, varLine
                            VarFoundNone = False
                        Next
                    End If
                Loop
                oTS.Close
                oFile2.Close
                oTSOut.Close
                Exit Do
                If VarFoundNone = True Then
                    WScript.Echo "No errors found."
                Else
                    WScript.Echo "Errors found.  Check logfile for more info."
                End If
        End if

  • [help needed] make symlinks in dir to dir script for bashburn

    Hi! i start using bashburn and i think is amazing! but the only thing is that to make the symlinks to /tmp/burn is tedious... i use tuxcmd and one file at the time i select from the right click menu "make symlink" for all the files i want... so i think to make an script to make symlinks from one directory to another and then when finish, delete those symlinks... BUT (BIG BUT ) i only want to make symlinks to /tmp/burn until it has dvd5 size (4,3gb?) adding symlinks in alfabethical order throught the original dir, because its no use if size is larger than DVD size i will need to delete those files... maybe later i can add the choose option between DVD sizes or specify a custom size
    Here's what i have right now, need little help & comments i think this will be usefull to many
    #!/bin/bash
    echo ' -- Make symlinks script -- '
    sleep 1
    ##### ORIGINAL DIRECTORY #####
    IDIR=pwd
    echo ' Original directory: ' $IDIR
    echo ' -- press c to change directory, Enter to continue -- '
    read DIR
    while [ "$DIR" = c ]; do
    echo ' Enter new directory path: '
    read IDIR
    echo ' New directory: ' $IDIR
    echo ' -- press c to change, Enter to continue -- '
    read DIR
    done
    ##### DESTINATION DIRECTORY #####
    echo ' Destination directory: /tmp/burn '
    echo ' -- press c to change directory, Enter to continue -- '
    read DIR
    while [ "$DIR" = c ]; do
    echo ' Enter new directory path: '
    read FDIR
    echo ' New directory: ' $FDIR
    echo ' -- press c to change, Enter to continue -- '
    read DIR
    done
    ##### MAKE SYMLINKS #####
    for x in $IDIR
    do
    ln -s $IDIR/$x $FDIR/$x
    #HERE i think need to be the directory size limit check ($size or 4,5 gb limit), dont?
    done
    ##### SHOW CREATED SYMLINKS #####
    echo Symlinks created from $IDIR to $FDIR :
    ls -l $FDIR
    ##### KEEP OR DELETE CREATED SYMLINKS #####
    echo ' -- press k to keep symlinks in ' $FDIR ', Enter to delete created symlinks in ' $FDIR ' -- '
    read
    for x in $ODIR ; do
    rm $x
    done
    echo ' symlinks in $FDIR deleted '
    sleep 3
    ##### SHOW DESTINATION DIRECTORY #####
    echo ' content of $FDIR: '
    ls -l $FDIR
    echo ' Press a key to exit '
    read
    exit 0

    Cool. I tried a bit, however -- it is not very much documented. Maybe you can use it:
    #!/bin/bash
    echo ' -- Make symlinks script -- '
    sleep 1
    ##### ORIGINAL DIRECTORY #####
    IDIR=$(pwd)
    FDIR=/tmp/burn
    ODIR=/tmp/other
    # MAXSIZE in kbytes
    MAXSIZE=$(( 120 * 1024 ))
    echo $MAXSIZE
    echo ' Original directory: ' $IDIR
    echo ' -- press c to change directory, Enter to continue -- '
    read DIR
    while [ "$DIR" = c ]; do
    echo ' Enter new directory path: '
    read IDIR
    echo ' New directory: ' $IDIR
    echo ' -- press c to change, Enter to continue -- '
    read DIR
    done
    ##### DESTINATION DIRECTORY #####
    echo ' Destination directory: /tmp/burn '
    echo ' -- press c to change directory, Enter to continue -- '
    read DIR
    while [ "$DIR" = c ]; do
    echo ' Enter new directory path: '
    read FDIR
    echo ' New directory: ' $FDIR
    echo ' -- press c to change, Enter to continue -- '
    read DIR
    done
    ##### MAKE SYMLINKS #####
    for x in $(ls -l $IDIR|grep ^d|cut -d " " -f 9)
    do
    SIZE=$(du -k --max-depth=0 $IDIR/$x | cut -f 1)
    if [ $SIZE -lt $MAXSIZE ]
    then
    echo "Creating link for dir: $x size: $SIZE"
    ln -s $IDIR/$x $FDIR/$x
    else
    echo "Not creating link for dir: $x size: $SIZE"
    fi
    #HERE i think need to be the directory size limit check ($size or 4,5 gb limit), dont?
    done
    ##### SHOW CREATED SYMLINKS #####
    echo Symlinks created from $IDIR to $FDIR :
    ls -l $FDIR
    ##### KEEP OR DELETE CREATED SYMLINKS #####
    echo ' -- press k to keep symlinks in ' $FDIR ', Enter to delete created symlinks in ' $FDIR ' -- '
    read
    for x in $ODIR ; do
    rm $x
    done
    echo ' symlinks in $FDIR deleted '
    sleep 3
    ##### SHOW DESTINATION DIRECTORY #####
    echo ' content of $FDIR: '
    ls -l $FDIR
    echo ' Press a key to exit '
    read
    exit 0

  • How can I search for a string like a partial IP address in the global search

    When searching for a string like "10.255." the global search finds messages containing "255" or "10" and both.
    This happens no matter whether quotation is used or not.
    When quotation is used it probably will match on the given order as well, but beeing in the timezone '+0100' the string "10" is always found first (in the email headers...).
    Is there a way to tell the global search not to use '.' or any other character as whitespace?

    When searching for a string like "10.255." the global search finds messages containing "255" or "10" and both.
    This happens no matter whether quotation is used or not.
    When quotation is used it probably will match on the given order as well, but beeing in the timezone '+0100' the string "10" is always found first (in the email headers...).
    Is there a way to tell the global search not to use '.' or any other character as whitespace?

  • How to search for particular string in array?

    I am struggling to figure out how to search array contents for a string and then delete the entry from the array if it is found.
    The code for a program that allows the user to enter up to 20 inventory items (tools) is posted below; I apologize in advance for it as I am also not having much success grasping the concept of OOP and I am certain it is does not conform although it all compiles.
    Anyway, if you can provide some assistance as to how to go about searching the array I would be most grateful. Many thanks in advance..
    // ==========================================================
    // Tool class
    // Reads user input from keyboard and writes to text file a list of entered
    // inventory items (tools)
    // ==========================================================
    import java.io.*;
    import java.text.DecimalFormat;
    public class Tool
    private String name;
    private double totalCost;
    int units;
      // int record;
       double price;
    // Constructor for Tool
    public Tool(String toolName, int unitQty, double costPrice)
          name  = toolName;
          units = unitQty;
          price = costPrice;
       public static void main( String args[] ) throws Exception
          String file = "test.txt";
          String input;
          String item;
          String addItem;
          int choice = 0;
          int recordNum = 1;
          int qty;
          double price;
          boolean valid;
          String toolName = "";
          String itemQty = "";
          String itemCost = "";
          DecimalFormat fmt = new DecimalFormat("##0.00");
          // Display menu options
          System.out.println();
          System.out.println(" 1. ENTER item(s) into inventory");
          System.out.println(" 2. DELETE item(s) from inventory");
          System.out.println(" 3. DISPLAY item(s) in inventory");
          System.out.println();
          System.out.println(" 9. QUIT program");
          System.out.println();
          System.out.println("==================================================");
          System.out.println();
          // Declare and initialize keyboard input stream
          BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
          do
             valid = false;
             try
                System.out.print(" Enter an option > ");
                input = stdin.readLine();
                choice = Integer.parseInt(input);
                System.out.println();
                valid = true;
             catch(NumberFormatException exception)
                System.out.println();
                System.out.println(" Only numbers accepted. Try again.");
          while (!valid);
          while (choice != 1 && choice != 2 && choice != 9)
                System.out.println(" Not a valid option. Try again.");
                System.out.print(" Enter an option > ");
                input = stdin.readLine();
                choice = Integer.parseInt(input);
                System.out.println();
          if (choice == 1)
             // Declare and initialize input file
             FileWriter fileName = new FileWriter(file);
             BufferedWriter bufferedWriter = new BufferedWriter(fileName);
             PrintWriter dataFile = new PrintWriter(bufferedWriter);
             do
                addItem="Y";
                   System.out.print(" Enter item #" + recordNum + " name > ");
                   toolName = stdin.readLine();
                   if (toolName.length() > 15)
                      toolName = toolName.substring(0,15); // Convert to uppercase
                   toolName = toolName.toUpperCase();
                   dataFile.print (toolName + "\t");
                   do
                      valid = false;
                      try
                         // Prompt for item quantity
                         System.out.print(" Enter item #" + recordNum + " quantity > ");
                         itemQty = stdin.readLine();
                         // Parse integer as string
                         qty = Integer.parseInt (itemQty);
                         // Write item quantity to data file
                         dataFile.print(itemQty + "\t");
                         valid=true;
                      catch(NumberFormatException exception)
                         // Throw error for all non-integer input
                         System.out.println();
                         System.out.println(" Only whole numbers please. Try again.");
                   while (!valid);
                   do
                      valid = false;
                      try
                         // Prompt for item cost
                         System.out.print(" Enter item #" + recordNum + " cost (A$) > ");
                         itemCost = stdin.readLine();
                         // Parse float as string
                         price = Double.parseDouble(itemCost);
                         // Write item cost to data file
                         dataFile.println(fmt.format(price));
                         valid = true;
                      catch(NumberFormatException exception)
                         // Throw error for all non-number input (integers
                      // allowed)
                         System.out.println();
                         System.out.println(" Only numbers please. Try again.");
                   while (!valid);
                   // Prompt to add another item
                   System.out.println();
                   System.out.print(" Add another item? Y/N > ");
                   addItem = stdin.readLine();
                   while ((!addItem.equalsIgnoreCase("Y")) && (!addItem.equalsIgnoreCase("N")))
                      // Prompt for valid input if not Y or N
                      System.out.println();
                      System.out.println(" Not a valid option. Try again.");
                      System.out.print(" Add another item? Y/N > ");
                      addItem = stdin.readLine();
                      System.out.println();
                   // Increment record number by 1
                   recordNum++;
                   if (addItem.equalsIgnoreCase("N"))
                      System.out.println();
                      System.out.println(" The output file \"" + file + "\" has been saved.");
                      System.out.println();
                      System.out.println(" Quitting program.");
            while (addItem.equalsIgnoreCase("Y"));
    // Close input file
    dataFile.close();
       if (choice == 2)
       try {
          Read user input (array search string)
          Search array
          If match found, remove entry from array
          Confirm "deletion" and display new array contents
       catch block {
    } // class
    // ==========================================================
    // ListToolDetails class
    // Reads a text file into an array and displays contents as an inventory list
    // ==========================================================
    import java.io.*;
    import java.util.StringTokenizer;
    import java.text.DecimalFormat;
    public class ListToolDetails {
       // Declare variable
       private Tool[] toolArray; // Reference to an array of objects of type Tool
       private int toolCount;
       public static void main(String args[]) throws Exception {
          String line, name, file = "test.txt";
          int units, count = 0, record = 1;
          double price, total = 0;
          DecimalFormat fmt = new DecimalFormat("##0.00");
          final int MAX = 20;
          Tool[] items = new Tool[MAX];
          System.out.println("Inventory List");
          System.out.println();
          System.out.println("REC.#" + "\t" + "ITEM" + "\t" + "QTY" + "\t"
                + "PRICE" + "\t" + "TOTAL");
          System.out.println("\t" + "\t" + "\t" + "\t" + "PRICE");
          System.out.println();
          try {
             // Read a tab-delimited text file of inventory items
             FileReader fr = new FileReader(file);
             BufferedReader inFile = new BufferedReader(fr);
             StringTokenizer tokenizer;
             while ((line = inFile.readLine()) != null) {
                tokenizer = new StringTokenizer(line, "\t");
                name = tokenizer.nextToken();
                try {
                   units = Integer.parseInt(tokenizer.nextToken());
                   price = Double.parseDouble(tokenizer.nextToken());
                   items[count++] = new Tool(name, units, price);
                   total = units * price;
                } catch (NumberFormatException exception) {
                   System.out.println("Error in input. Line ignored:");
                   System.out.println(line);
                System.out.print(" " + count + "\t");
                System.out.print(line + "\t");
                System.out.print(fmt.format(total));
                System.out.println();
             inFile.close();
          } catch (FileNotFoundException exception) {
             System.out.println("The file " + file + " was not found.");
          } catch (IOException exception) {
             System.out.println(exception);
          System.out.println();
       //  Unfinished functionality for displaying "error" message if user tries to
       //  add more than 20 tools to inventory
       public void addTool(Tool maxtools) {
          if (toolCount < toolArray.length) {
             toolArray[toolCount] = maxtools;
             toolCount += 1;
          } else {
             System.out.print("Inventory is full. Cannot add new tools.");
       // This should search inventory by string and remove/overwrite matching
       // entry with null
       public Tool getTool(int index) {
          if (index < toolCount) {
             return toolArray[index];
          } else {
             System.out
                   .println("That tool does not exist at this index location.");
             return null;
    }  // classData file contents:
    TOOL 1     1     1.21
    TOOL 2     8     3.85
    TOOL 3     35     6.92

    Ok, so you have an array of Strings. And if the string you are searching for is in the array, you need to remove it from the array.
    Is that right?
    Can you use an ArrayList<String> instead of a String[ ]?
    To find it, you would just do:
    for (String item : myArray){
       if (item.equals(searchString){
          // remove the element. Not trivial for arrays, very easy for ArrayList
    }Heck, with an arraylist you might be able to do the following:
    arrayList.remove(arrayList.indexOf(searchString));[edit]
    the above assumes you are using 1.5
    uses generics and for each loop
    [edit2]
    and kinda won't work it you have to use an array since you will need the array index to be able to remove it. See the previous post for that, then set the value in that array index to null.
    Message was edited by:
    BaltimoreJohn

  • How do i search for a string in a txt file using java??

    How do i search for a string in a txt file using java??
    could you please help thanks
    J

    Regular expressinos work just fine, especially when
    searching for patterns. But they seem to be impying
    it's a specific group of characters they're looking
    for, and indexOf() is much faster than a regex.If he's reading from a file, the I/O time will likely swamp any performance hit that regex introduces. I think contains() (or indexOf() if he's not on 5.0 yet) is preferable to regex just because it's simpler. (And in the case of contains(), the name makes for a very clear, direct mapping between your intent and the code that realizes it.)

Maybe you are looking for