Read key from console without blocking?

I have a console application (a server) that needs to run in a loop till the user stops it (currently with Ctrl-C (ugh!)).
How can I check to see if a key has been pressed (Enter is fine), and if not, just continue? I don't want to wait for a keypress, as System.in.read() does.
The only thing I can think of is to put System.in.read() inside another Thread.
There must be a standard way to solve this problem.
Any suggestions?
Thanks.

Try thispublic class Test {
    public static void main( String args[] ) {
     int cnt=0;
     while (cnt<20) {
         try {
          if (System.in.available()>0) {
              System.out.println("AV="+System.in.available());
              while(System.in.available()>0) System.in.read();
          Thread.sleep(1000);
         } catch (Exception e) { e.printStackTrace(); }
         cnt++;
}And the answer is, "There is no way to read single characters"

Similar Messages

  • Read Input from console !!!

    Im am very new to java and trying to learn java ..
    Now the problem i have is, I have to read input from console without using the BufferReader method..
    Please tell me how to go about it..
    I have a assignment to complete and im not able to figure out the way out.
    Help ..

    http://java.sun.com/j2se/1.4.1/docs/api/java/lang/System.html
    Read first about the System class provided by Java.
    Select the 'in' method of System class and it will take
    you to the InputStream.
    http://java.sun.com/j2se/1.4.1/docs/api/java/io/InputStream.html
    An essay way of reading input is:
    "value?"=System.in.read();
    Try and see if this works. It will not use the
    BufferReader portion, but it gives you another way
    of reading from the console.

  • Read characters from console.

    Hii
    I'm trying for 2 days to read characters from console on the fly, but it didn't work.
    I want to read each char that user press on line and without waiting for the Enter button. It's like an keyboard event but there is no GUI.
    I will appreciate any help.
    Thanks.

    I don't understund what you really want to do.it is possible mesure the time between each char type using the last code :
    char charPressed='\0';
    String line="";
    while(charPressed != '\n')
    try
    // start time
    charPressed =(char) System.in.read();
    line += charPressed;
    // end time
    // want to get out
    if(...) break;
    catch(IOException ioex) {ioex.printStackTrace();}
    Sorry, but your code doesn't measure the time between each char type.
    The function read waits for the "enter" key, and just after pressing enter your code will start to read all the chars you typed before "enter", so it won't do it.
    Read function will not help in this subject.

  • How to read char from console

    Hi can any body help me..
    I want to read char from keybord. withought pressing ENTER.
    I am not sure how i can do it. I can't use
    BufferedReader br = new  BufferedReader(new InputStreamReader ( System.in )) ;
    char key ;
    key = (char )br.read() ;
    cuz i have to press ENTER every time to read char.
    Thanks in advance.

    try this,I' have found a part on Internet
    package exercises;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    * questa � la classe d' esempio per leggere l'input dalla console*/
    public class Echo {
    public static void main(String args[]) throws Exception{
    // This is where the magic happens. We have a plain old InputStream
    // and we want to read lines of text from the console.
    // To read lines of text we need a BufferedReader but the BufferedReader
    // only takes Readers as parameters.
    // InputStreamReader adapts the API of Streams to the API of Readers;
    // receives a Stream and creates a Reader, perfect for our purposes.
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String input = "";
    while(true){
    System.out.print("ECHO< ");
    //As easy as that. Just readline, and receive a string with
    //the LF/CR stripped away.
    input = in.readLine();
    //Is a faster alternative to: if (input == null || input.equals(""))
    //The implementation of equals method inside String checks for
    // nulls before making any reference to the object.
    // Also the operator instance of returns false if the left-hand operand is null
    if ("".equals(input)){
    break;
    }else
    // Here you place your command pattern code.
    if ("ok".equals(input)){
    System.out.println("OK command received: do something �");
    //Output in uppercase
    System.out.println("ECHO> " + input.toUpperCase());
    System.out.println("ECHO> bye bye");
    //We exit without closing the Reader, since is standard input,
    // you shouldn't try to do it.
    // For all other streams remember to close before exit.
    }

  • How can I read "Keys" from a Config File that have square brackets in them?

    I'm using the "Read Key (String).vi" from the config.llb and I'm having a problem because the key names in my file have square brackets in them. I'm creating an VI to read certain pieces of the TestStand �StationGlobals.ini� file and array elements appear as %[0] = "blah blah blah". It looks like they're not getting recognized at all. Is there a way to handle this?

    I was just looking at the code inside the configuration VIs and the way they work under V6 is that the Open VI actually reads the contents of the configuration file, parses it (in nice-platform independent G) and stores it in a fancy LV2-style global called the "Config Data Registry.vi". The routine that does the parsing is called "String to Config Data.vi". My gut reaction is that this code is going to be the same in your version because between sometime prior to V6 of LV, NI changed the location of a couple terminals on the low-level Match String function and it looks like when this code was originally written the terminals were in the old configuration.
    In any case, if your square-bracket containing strings are getting lost, this is probib
    ly where it's happening at. The other place to check is in the read VI itself. The V6 VI for reading the configuration registry is called "Config Data Get Key Value.vi". It's output is then further parsed by a function called "Parse Store String.vi" if the "read raw string?" input is set to False (the default position).
    Given that all the code for these functions are written in LV, you should be able to fix your VIs to read the strings you have in the ini file now. Which IMHO is actually the way they should work.
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • Read Tables from ECC without BAPI

    Hi All,
    I have a requirement that I want to read the table in ECC from CRM without making use of BAPI FM's. Is it possible?
    Thanks
    Srinivas.k

    Hi Srinivas,
    Sounds Crazy a bit, but you can use RFC_READ_TABLE FM to meet the requirement.
    Options: you give the WHERE conditions
    Fields: you give the selectable fields
    Rest all parameters are self explanatory in that.
    Hope it helps.
    Regards
    Sidd

  • How to read keys from a sparcStation keyboard ?

    Hi,
    I looking for a simple C source to get the key code from a sparcStation keyboard. This source should be portable on all Sun (and eventually PC) stations.
    Thanks.
    Antoine.

    Hi,
    You can check and see the "xev" (/usr/openwin/demo) utility bundled
    with Solaris to see if it meets your requirement.
    This is a MIT developed utility and its source is available at:
    ftp://ftp.x.org/pub/unsupported/programs/xev/
    Hope this helps.
    Gopinath.
    Sun - DTS.

  • Reading images from URL without knowing the format

    I have an image url like this: http://example.com/image.php?id=5605. How do I get the actual image from such an URL? I have tried using ImageIO.read and loading the url directly into an ImageIcon without success.

    yeah,
    I knew a little about linearization and but the idea was to help quick loading the very first page of a document while the rest of the data still is arriving. Not exactly what I needed here.
    Anyway, you have just confirmed my fears, I will have to know the document size, where exactly it ends on my stream, in order to correctly load it.
    I appreciate your help sir. Thanks for your time.
    Best regards.

  • Reading Binary from Console

    Hi all:
    I want to read the binary string from the console and do some manipulation with it. Can anyone please help?
    e.x Suppose i enter 0010 on my console and now i want read this as binary value
    and do some other manipulation with it. But i really don't know how i can read it?
    I am getting decimal value if i read it
    e.x suppose i entered 0010
    i will get 10 as value because i am reading it as integer not as binary. So iwant it as 0010 only.
    Thanks,
    Girish

    checking the range of this binary value (Range is 000000 -111111 ) read as suggested by suppechasper and check whether read value is between 0 and 64. if u read into say int x then
    if( x>0 && x <64 ){
                System.out.println("In the range");;
            }else{
                System.out.println("Out of the range");;
            }

  • How to retrieve User Description for a particular MDM User from Console ?

    In my Application i  have to retrieve User Descripton(a field) for the MDM Users  from Console. I am using MDM Java Api 1(MDM4j) in my application. Is there any way i can retrieve MDM User Description from Console without using MDM Admin API?

    Hi Namrata,
    Sorry, I have a different perspective from you (I don't work with the Java API). So, you can ignore what I said about the protocols. That's lower-level than what you would care about.
    The correct thing to do is to use the Admin API to get the users, as you are doing. If you have to log in twice, it might be because you're using the old Java API.
    Please verify that you're using these packages:
    mdm-core.jar, mdm-common.jar, mdm-protocol.jar, mdm-data.jar, mdm-admin.jar
    versus the old API, which was called mdm4.jar.
    Thanks,
    Cleopatra

  • Message (on one account) when logging in: The user account running the Configuration Manager console has insufficient permissions to read information from the Configuration Manager site database.

    After installing the reportservice/database i cannot use the Configuration Manager Console 2012 anymore with my own AD account. (The accounts of my colleagues are stil working)
    When i login i get the following message:
    The user account running the Configuration Manager console has insufficient permissions to read information from the Configuration Manager site database. The account must belong to a security role in Configuration Manager. The account must also have
    the Windows Server Distributed Component Object Model (DCOM) Remote Activation permission for the computer running the Configuration Manager site server and the SMS Provider.
    I checked the following:
    I am a administrative user in SCCM (Full Administrator)
    I am a member of the administrator group on the server
    Deleted HKEY_CURRENT_USER\Software\Microsoft\ConfigMgr10
    I tried to start it on multiple workstations and deleted my roaming profile
    Any more suggestions?

    Hi,
    Maybe you could have a look on the below blog.
    http://blog.nimbo.com/how-to-disable-user-account-control-in-windows-server-2012/
    (Note: Microsoft provides third-party contact information to help you find technical support. This contact information
    may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.)
    Best Regards,
    Joyce Li
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • JNI: Reading Java output from console window

    Hi!
    Sorry if this is wrong place to put this topic, but I didn't know where to put it, so now it's here.
    I'm trying to make a launcher program with C++ which would start my java program. I'm using "env->CallStaticVoidMethod (romexisClass, mid, args);" and it works perfectly. But I'd like to read the text which my java program outputs to the console window and save it into a text file. Is this possible and how? It looks like I stdout etc. won't work.
    Or as other option I could use some Java Exe Wrapper, but I haven't found any which would allow passing arguments to the main() without -D option and I need to be able to read those arguments from a .ini-file. It should be a subtitute for the following command "java -Xss$var1k -Xms$var2m -classpath $var3 test.program host=$var4" in which I'd read $vars from a .ini-file.
    Thx,
    Lassi

    Maybe this will do the job:
    http://cboard.cprogramming.com/archive/index.php/t-86580.html

  • Without loops how can i read data from associative Array??

    Hi all,
    I am facing scenario like...
    i need to read data from associative array  without using loops is it possible,
    CREATE OR REPLACE PACKAGE BODY test_pkg IS
        TYPE t1 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
       -- in array we can expect more than one row or sometimes no data also.
      FUNCTION test1(vt1 T1 DEFAULT CAST(NULL AS t1)) RETURN NUMBER IS
      BEGIN
        -- basically in array we'll get data of column2
        -- this loop should satisfies table1.colum2 = nvl(NULL, table2.colum2 )if array is null.
        -- if array is not null then only compare with array values
        FOR i IN (SELECT t1.colum1,t1.column2
                         FROM table1 t1, table1 t2
                              WHERE t1.colum1 = t2.column1
                                AND t1.colum2 = nvl(vt1, t2.colum2)
          LOOP
            generateTEXT(i.colum1, i.colum2);
         END LOOP;
      END test1;
    END test_pkg;
    in table1 we have date like...
    colum1          column2
    Jan                  1
    Feb                  2
    Mar                  3
    if i call select test_pkg.test1(1) from dual then output should
    be Jan..
    and
    select test_pkg.test1(null) from dual then it should display all elements from table1.
    Jan                  1
    Feb                  2
    Mar                  3,
    Thanks for your quick replay..

    i need to read data from associative array  without using loops is it possible,
    No - you would need to create a SQL type and then use the TABLE operator to unnest the collection.
    create or replace TYPE my_nums IS TABLE OF INTEGER;
    DECLARE
    --  TYPE my_nums IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
      v_nums my_nums := my_nums(1, 2, 3);
      v_total number;
    BEGIN
      select sum(column_value) into v_total from table(v_nums);
      DBMS_OUTPUT.PUT_LINE
        ('Sum of the numbers is ' || TO_CHAR(v_total));
    END;
    Sum of the numbers is 6

  • Can the aTV read files from an iTunes library on my nas drive without my computer being on

    I have my itunes library on a My Book Live nas drive that contains all of my digital movies and TV shows. I want to be able to watch my movies from the library without a computer running. I understand that Apple has chosen to chain you to the computer and your itunes account through Home Sharing but I can not see why they couldn't allow you to access a nas drive without a computer running because your aTV is tied to your itunes account also so why do they force you to run a computer 24/7 365 in order to access the files you have bought and paid for.
    I have a love/hate for Apple because I love the quality of the products they make but I hate how they make all of the digital files you purchase only accessible through a computer running Home Sharing even though the files are not stored on the computer.
    I have tried several things to get this to work without a computer but no luck. The only way I have found to be able to do this is to Jailbreak your aTV and install 3rd party software (which I don't want to do) that will allow you to by pass the computer and Home Sharing (which is dumber than ****) because that is all I want to do is eliminate the need of a computer running wasting electricity (I thought Apple was supposed to be an enviro friendly company, guess not). I am not trying to steal or give someone else my purchased movies and using the aTV and an internet connection they could still be able to tie your media to your itunes account so I just don't get there thinking, or lack of thinking I should say.
    Is their a way to do this without Jailbreaking or modifying your aTV?
    If not is Apple ever going to wake up and allow there customers to actually USE the media they purchase from them without Home Sharing and a computer running?

    _Skull wrote:
    Can the aTV read files from an iTunes library on my nas drive without my computer being on
    no it can't. you need itunes open and running

  • EXS24 read root key from file name only

    Has anyone encountered this with EXS24 in Logic 7? If you set preferences to "read root key from file name only" then EXS reads the root key from the file itself when loading samples. On the other hand if you set them to "read root key from file only" then it reads the root key from the file name. Or am I just imagining this?
    P.S. if anyone from Apple is reading, could you please update EXS24? It's a bit primitive by today's standards.

    Hi
    Not a direct answer to your question, but if you are doing a lot of sample mapping etc, you may want to check out Redmatica's KeyMap Pro or the simpler Keymap 1:
    http://www.redmatica.com
    CCT

Maybe you are looking for