Question about read method of InputStream

Hello everyone,
I am using read method of InputStream to read a stream from a remote machine. The network connection is not very stable (for example, a wireless network whose the signal strength is relatively low). I am wondering if read method returns -1 (which indicates the end of the stream has been reached), and if I invoke read method again on the same stream, is it possible to read any more data?
I think maybe I can read some more data even if read returns -1 in one time because the connection is not very stable. I am looking for your comments to my problem in my specific situation.
regards,
George

Thanks Adeodatus,
Doc says This method blocks until input data is
available, the end of the stream is detected, or
an
exception is thrown.
http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputS
tream.html#read()
I have not found any related parts in documents.
http://java.sun.com/j2se/1.4.2/docs/api/
Them's docs.
if you're using a different version of java, replace
the underlined portion with your version number.I am using JDK 1.3, and I have found related documents. But I can not find out where can I set timeout value of read operation. I am reading data from an HTTP InputStream. Can you help?
regards,
George

Similar Messages

  • Two questions about the methods in InputStream class.

    1, close() method
    the API says when the method is invoked, the input stream and its associateive channels are closed to release system resources.
    What does it mean by "associative channels"?
    2, read(byte[] b) method
    the API says it reads b bytes of data and returns b.length as an Integer, however, I dont think what can this method do, because unlike normal read(), which returns the actual byte of data read, but returns the no of byte read, which I cant find a way to mainpulate with the data read.
    Any help??
    please help
    thanks

    while(true){
    int lim = in.read(bufferArray);
    if(lim == -1)break;
    buffer.limit(lim);
    buffer.flip();
    channel.write(buffer);
    buffer.clear();
    while (true)
    int lim = in.read(buffer);//No such method in InputStream
    if (lim < 0) break;
    buffer.flip();
    channel.write(buffer);
    buffer.compact();
    My guess is that you didn�t read my original post properly. The variable in is an InputStream and it doesn�t have a read method that takes a ByteBuffer as an argument.
    In my code I am using a byte array, which is backed by the buffer, I don�t believe that when writing to this byte array , the InputStream will try to update the internal accounting system of the buffer, that�s why I have done this manually by setting the limit of the buffer (the number of bytes actually read are set as the limit).
    Correct me if I am a wrong thanks for your feedback .

  • A question about a method with generic bounded type parameter

    Hello everybody,
    Sorry, if I ask a question which seems basic, but
    I'm new to generic types. My problem is about a method
    with a bounded type parameter. Consider the following
    situation:
    abstract class A{     }
    class B extends A{     }
    abstract class C
         public abstract <T extends A>  T  someMethod();
    public class Test extends C
         public <T extends A>  T  someMethod()
              return new B();
    }What I want to do inside the method someMethod in the class Test, is to
    return an instance of the class B.
    Normally, I'm supposed to be able to do that, because an instance of
    B is also an instance of A (because B extends A).
    However I cannot compile this program, and here is the error message:
    Test.java:16: incompatible types
    found   : B
    required: T
                    return new B();
                           ^
    1 errorany idea?
    many thanks,

    Hello again,
    First of all, thank you very much for all the answers. After I posted the comment, I worked on the program
    and I understood that in fact, as spoon_ says the only returned value can be null.
    I'm agree that I asked you a very strange (and a bit stupid) question. Actually, during recent months,
    I have been working with cryptography API Core in Java. I understood that there are classes and
    interfaces for defining keys and key factories specification, such as KeySpec (interface) and
    KeyFactorySpi (abstract class). I wanted to have some experience with these classes in order to
    understand them better. So I created a class implementing the interface KeySpec, following by a
    corresponding Key subclass (with some XOR algorithm that I defined myself) and everything was
    compiled (JDK 1.6) and worked perfectly. Except that, when I wanted to implement a factory spi
    for my classes, I saw for the first time this strange method header:
    protected abstract <T extends KeySpec> T engineGetKeySpec
    (Key key, Class<T> keySpec) throws InvalidKeySpecExceptionThat's why yesterday, I gave you a similar example with the classes A, B, ...
    in order to not to open a complicated security discussion but just to explain the ambiguous
    part for me, that is, the use of T generic parameter.
    The abstract class KeyFactorySpi was defined by Sun Microsystem, in order to give to security
    providers, the possibility to implement cryptography services and algorithms according to a given
    RFC (or whatever technical document). The methods in this class are invoked inside the
    KeyFactory class (If you have installed the JDK sources provided by Sun, You can
    verify this, by looking the source code of the KeyFactory class.) So here the T parameter is a
    key specification, that is, a class that implements the interface KeySpec and this class is often
    defined by the provider and not Sun.
    stefan.schulz wrote:
    >
    If you define the method to return some bound T that extends A, you cannot
    return a B, because T would be declared externally at invocation time.
    The definition of T as is does not make sense at all.>
    He is absolutely right about that, but the problem is, as I said, here we are
    talking about the implementation and not the invocation. The implementation is done
    by the provider whereas the invocation is done by Sun in the class KeyFactory.
    So there are completely separated.
    Therefore I wonder, how a provider can finally impelment this method??
    Besides, dannyyates wrote
    >
    Find whoever wrote the signature and shoot them. Then rewrite their code.
    Actually, before you shoot them, ask them what they were trying to achieve that
    is different from my first suggestion!
    >
    As I said, I didn't choose this method header and I'm completely agree
    with your suggestion, the following method header will do the job very well
    protected abstract KeySpec engineGetKeySpec (Key key, KeySpec key_spec)
    throws InvalidKeySpecException and personally I don't see any interest in using a generic bounded parameter T
    in this method header definition.
    Once agin, thanks a lot for the answers.

  • Question about Reader DRM activation

    Hi All
    I got a paper "FAQ ACS Discontinuation of Sales, November 30, 2004"
    I have a question about ACS.
    As I konw, ACS is discontinued effective November 30, 2004.
    and I read a section in paper below:
    Q. Will Adobe Reader and Acrobat users get support from Adobe for eBook issues?
    A. Support is not available for the free Adobe Reader, however, assistance for user activation is
    available until December 31, 2006.
    Does it mean Reader activation service will be stop until December 31, 2006?
    That's a big problem for our ebook service!!

    Adobe communicated in January to ACS customers that the DRM Activator service would remain operational until December 31, 2007, one year longer than previously announced.
    If you didn't receive this announcement, send your contact info (email and surface mail) to "[email protected]".
    You'll receive an autotmated reply that your email bounced but it will then be manually confirmed.

  • Question about reading hex data

    Hello! I am a Labview Novice and having a problem about reading hex data.
    Basically I am having bytes from the serial port like this: "80100E0E0AB4F646F24A00911267087E032080057FFF "
    It is not encoded in ASCII. What I want to do is to convert the hex to an ASCII hex string.
    so that the string would become hex numbers in ASCII.
    I think the following might be a solution, but I have no idea what the subvi is in the solution.
    http://forums.ni.com/t5/LabVIEW/Hex-String-to-Ascii-Hex-String/m-p/886078/highlight/true#M400462
    Thanks in advance and I appreciate your kind help!
    Solved!
    Go to Solution.

    coolmatthew wrote:
    What I want to do is actually this.
    You are using way too much code for all this. All you need is a concatenate strings, replacing your entire loop and such. Same result.
    (see also)
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    HEXTwiddler.png ‏4 KB

  • Question about reading a string or integer at the command line.

    Now I know java doesn't have something like scanf/readln buillt into it, but I was wondering what's the easiest, and what's the most robust way to add this functionality? (This may require two separate answers, sorry).
    The reason I ask is because I've been learning java via self study for the SCJA, and last night was the first time I ever attempted to do this and it was just hellish. I was trying to make a simple guessing game at the command line, I didn't realize there wasn't a command read keyboard input.
    After fighting with the code for an hour trying to figure it out, I finally got it to read the line via a buffered reader and InputStreamReader(System.in), and ran a try block that threw an exception. Then I just used parseInt to get the integer value for the guess.
    Another question: To take command line input, do you have to throw an exception? And is there an easier way to make this work? It seems awfully complicated to take user input without a jframe and calling swing.
    Edited by: JGannon on Nov 1, 2007 2:09 PM

    1. Does scanner still work in JDK1.6?Try it and see. (Hint: the 1.6 documentation for the class says "Since: 1.5")
    If you get behaviour that doesn't fit with what you expect it to do, post your code and a description of our expectations.
    2. Are scanner and console essentially the same thing?No.
    Scanner is a class that provides methods to break up its input into pieces and return them as strings and primitive values. The input can be a variety of things: File InputStream, String etc (see the Scanner constructor documentation). The emphasis is on the scanning methods, not the input source.
    Console, on the other hand, is for working with ... the console. What the "console" is (and whether it is anything) depends on the JVM. It doesn't provide a lot of functionality (although the "masked" password input can't be obtained easily any other way). In terms of your task it will provide a reader associated with the console from which you can create a BufferedReader and proceed as you are at the moment. The emphasis with this class is the particular input source (and output destination), not the scanning.
    http://java.sun.com/javase/6/docs/api/java/util/Scanner.html
    http://java.sun.com/javase/6/docs/api/java/io/Console.html

  • A question about reading tomcat source code

    Hi, everyone!
    I just saw the tomcat source code, there is a method named "await" in StandardServer class. The comment of this method decribe that this method will wait util a proper shutdown command is received.
    I'm confused about it after read this method.
    In my opinion, this method create a server socket on port 8005 by default, and wait for "SHUTDOWN" string to only close the server socket which is listening on port 8005.
    But I think this method is supposed to close all the server sockets which are listenning for client's request and belong to this server when port 8005 received "SHUTDOWN" string.
    Thank you in advance.
    Edited by: Garrett.Li on Oct 17, 2007 9:18 AM

    about reading tomcat source code i cant get you man,

  • Newbie question about abstract methods

    hey, I'm working on a web application that I was given and I'm a little confused about
    some of the code in some of the classes. These are some methods in this abstract class. I don't understand
    how this post method works if the method it's calling is declared abstract. Could someone please tell me how this works?
        public final Representation post(Representation entity, Variant variant) throws ResourceException {
            prePostAuthorization(entity);
            if (!authorizeGet()) {
                return doUnauthenticatedGet(variant);
            } else {
                return doAuthenticatedPost(entity, variant);
    protected abstract boolean authorizeGet();Thanks
    Edited by: saru88 on Aug 10, 2010 8:09 PM

    Abstract Methods specify the requirements, but to Implement the functionality later.
    So with abstract methods or classes it is possible to seperate the design from the implementation in a software project.
    Abstract methods are always used together with extended classes, so I am pretty sure that you are using another class.
    Btw: Please post the Code Keyword in these brackets:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

  • Academic Question about Classes Method and Constructor

    Given the similarity between the Constructor class and the Method class, why don't they have a common super class for the methods they have in common that are unique to them?

    sledged wrote:
    jschell wrote:
    sledged wrote:
    I've found that the most common reason for invoking a constructor or method through reflection is because you don't know what you need until runtime, commonly because what you want can vary based on context, or is otherwise being specified external to the bit of code that uses reflection. Not true. The fact that I don't need it until runtime never means I don't know what I need.Never? Then your experiences with the reflection API have been different than mine. Either that or I wasn't very clear. Let's take Apache Commons BeanUtils;
    It doesn't matter how you access a class. You can't use it unless
    1. You have a goal in mind
    2. That object in some way fulfills that goal.
    3. You know how that object fulfills that goal.
    And as I already pointed out you can't use a JFrame for a JDBC driver. Simple as that. Nor can I create a new class that implements, for example, ProC (Oracle method to embed access into C code) using my own idiom despite that it provide database access. It MUST match what jdbc expects.
    Sometimes it's not even clear before runtime whether a constructor's needed or a method.
    I disagree. That isn't true in any OO language.Perhaps not out the box, but it can be true when using certain tools built from the OO language. Let me continue using the Spring framework as an example. It does not know whether to use a method or a constructor to instantiate any bean defined in the XML configuration metadata until that XML file is read and it determines whether or not a given bean definition has the "factory-method" attribute. The XML file in not read until runtime, therefore with any given bean defined therein, Spring does not know until runtime whether to use a constructor or method.Not apt at all.
    As I already said those are two different idioms. Spring supports them because they are used to solve different problems not because they wish constructors didn't exist.
    >
    The basis of OO is the "object". You can't have a method without the object in the conceptual OO model. (And in Smalltalk that is always true.)
    True, but one may not always care how the "object" is provided. When the method [Properties.load(InputStream)|http://java.sun.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.InputStream%29] is called, it isn't going to care whether the InputStream argument was instantiated by one of the FileInputStream constructors, or if it came from a [URL.openStream()|http://java.sun.com/javase/6/docs/api/java/net/URL.html#openStream%28%29] method call. It'll work with either regardless of their respective origins.
    That of course has nothing to do with anything. Unless you are suggesting that construction in any form should not exist.
    A factory is not a constructor.I'm not saying it is. I'm just pointing out a number of the similarities between the two.
    So? There are many similarities between RMI and JDBC but that doesn't mean that they should be the same.
    With your argument you can claim that construction doesn't exist because any method, regardless of intent, that uses 'new' would eliminate the need for construction. And that isn't what happens in OO languages.I wouldn't claim that construction doesn't exist in any OO language. But I do know that in ECMAScript construction exists on the basis of whether or not a method is called with the 'new' operator. So in ECMAScript a single method can also be a constructor.
    And in C++ I can entirely circumvent the object construction process. Actually I can do that in JNI as well.
    I would still be a bad idea.
    >
    They are not interchangable.Normally, no, but with a high enough level of abstraction, they can become interchangeable. Again, the Spring framework is a great example. It doesn't care if a method or a constructor is used, and it won't know which one has been chosen until runtime. I don't even think Spring checks the return type of a method, so you could use a void return type method. (Although I don't know what that would buy you because the bean would always be set to null, but still...)
    No.
    Based on that argument every possible programming problem could be solved by simply stating that one must implement the "doit()" method. One just need to generalize it enough.
    Different APIs exist because there are in fact differences not because there are similarities.
    Over generalization WILL lead to code that is hard to maintain. Actually generalization itself, even when done correctly, can lead to code that is actually more complex.
    Because construction is substantially different than calling a method. In all OO languages.Yes, construction is different, but the actual call to a constructor and a method is only syntactically different with the presence of the 'new' operator. With reflection the difference is between calling Method.invoke() and Constructor.newInstance(), and, as I mentioned earlier, there's enough similarity between the two methods that they could be called by a single method specified by a common super class.Which does not alter the fact that the process of achieving the result is fundamentally different.

  • Basic Cryptography Question about Cryptograpic Methodes

    Hi
    I have some text data that i need to encrypt and save to a file (kind of a licence file). Than that file is distributed with the software. Upon runtime the software should be able to read in that crypted data file and decrypt it so it can read the information for use.
    I know how this is done using DES for example. But with DES i have to distribute the DES Key with the software, so everbody could use that key to create new encrypted data files.
    What i'm looking for is something like a key i can use to encrypt the data and another key that can only be used to decrypt the data but not for encrypting it, so i can destribute that key with the software with out the danger that anybody can use that key to create new data (licence) files.
    Is there a cryptography mehtode to do this? If yes, is that methode available in JCE?
    I'm a newbie to crypthography, i just read little about the basic concepts, so i'm very thankful about your help.

    I'm not sure whether i understand what you mean. I don't see a reason why i have to exchange any kind of data with the client.
    i thought i package the public key and the encrypted data file with the software i distribute. Than, upon runtime the software loads the public key (as a serialized object) and the encrypted data file and decryptes the data file.
    But this just fits my needs, if the public key may just be used to decrypt the crypted data file and not for encryption. I'm a little bit confused about this point, because i read a lot in the past hours about this topic and the statement was, that private keys are used to decrypt and public keys are used to encrypt. So what i need is the opposite. And i couldn't find such an algorithm until know.
    Maybe you can help me to see that a little bit clearer?
    Thanks a lot for your help!

  • Question about listUsers() method of UserReaderMBean

    Hi:
    I am developing a custom authenticator for weblogic 7.0. I want to know how to use listUsers(java.lang.String userNameWildcard, int maximumToReturn) method of UserReaderMBean class.
    I am wondering what is maximumToReturn parameter doing? How should I make use of the value I get in this parameter.
    Thanks
    Virender Sandhu

    Thanks Adeodatus,
    Doc says This method blocks until input data is
    available, the end of the stream is detected, or
    an
    exception is thrown.
    http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputS
    tream.html#read()
    I have not found any related parts in documents.
    http://java.sun.com/j2se/1.4.2/docs/api/
    Them's docs.
    if you're using a different version of java, replace
    the underlined portion with your version number.I am using JDK 1.3, and I have found related documents. But I can not find out where can I set timeout value of read operation. I am reading data from an HTTP InputStream. Can you help?
    regards,
    George

  • Question about functions methods and variables

    Sorry but i couldn't figure out a better title.
    When does a method alter the variables it gets directly and when does a method just alter a clone of the variables it gets?
    How about a funcion?
    for example:
    public void (int i)
    i = 4;
    sometimes this method alters the integer which was given to it directly and sometimes it automatically creates a clone of the integer and alters that one. I just can't figure out why a method would do the first or the second.
    Im trying to achieve the direct changeing of the given variable without creating an unessecary clone.
    Thank You

    Comp-Freak wrote:
    Sorry but i couldn't figure out a better title.
    When does a method alter the variables it gets directly and when does a method just alter a clone of the variables it gets?
    How about a funcion?
    for example:
    public void (int i)
    i = 4;
    sometimes this method alters the integer which was given to it directly and sometimes it automatically creates a clone of the integer and alters that one. I just can't figure out why a method would do the first or the second.
    Im trying to achieve the direct changeing of the given variable without creating an unessecary clone.
    Thank YouThats quite all right about the title, trust me we get much worse titles on this forum. Most of the time to the effect of "Plz urgentlly!!!!111one"
    In Java, all variables passed into methods are passed by value, which means that if I pass an int variable to a method, that methods argument will always be a seperate variable. There is no way to pass variables by reference so that you are altering the original variable you passed in.
    It actually works the same way for reference variables that point to a particular object.
    public Object o = new Object();
    methodOne(o);
    public void methodOne(Object oArg) {
      o == oArg;  //true
    }It is essentially the same in this case, there are two seperate reference variables here, o and oArg is created once the method is called. There is only one Object created however and both reference variables point to it, so an == check will verify this that it is true.

  • Question about static method hiding

    I undestand that a static method may only be hidden in a subclass not overridden. But, I don't understand why an exception type thrown by the subclass method must be a subtype of the exception type thrown by the superclass method. For example,
    public class A {
    public static void foo() throws ExceptionA { }
    public class B extends A {
    public static void foo() throws ExceptionB { }
    gives a compile-time error if ExceptionB is not a subclass of ExceptionA. This makes perfect sense in the non-static case but what does it matter here?
    Thanks,
    Tim

    I don't understand your point. In either case, static
    or non-static, ExceptionB must be the same or a
    subclass of ExceptionA. My question is why this
    matters in the static case.I think it's for binary compatibility, that is, so that you can make changes to Java source files and recompile only the changed files. If you originally did not have the static method in class B, and called B.foo() in another class, the A.foo() method would actually be called at run time. If you then change the B class and add a foo() method, it must be compatible so that the other class's method call is still valid.
    If you're unfamiliar with the concept of binary compatibility, read the chapter in the Java Language Specification. It's a critical but often overlooked aspect of the Java language.

  • Simple question about Input Methods

    Hi everyone. I have a JTextArea in a frame. I want this TextArea to accept Chinese language directly from keyboard. For this I need to select an Input Method.
    One way to select an Input Method is to click on the control icon on the top left corner of the frame window and then select "Input Methods > Chinese".
    But I dont want selecting input method this way. I want to select Input Method for my TextArea within the code in frame's constructor.
    I do hope that you are getting my point.
    I tried like this:
    TextArea.selectInputMethod( new Locale("SIMPLIFIED_CHINESE"));
    But it gives me error that "cannot find method selectInputMethod()".
    I shall be very very very thankfull to you.
    Thanx
    ..::DW

    Yeh, it would be simpler to run a test, but i'm not at a workstation with a jdk or IDE at the moment!
    Thanks for the response though!

  • Question about reading a very big file into a buffer.

    Hi, everyone!
    I want to randomly load several characters from
    GB2312 charset to form a string.
    I have two questions:
    1. Where can I find the charset table file? I have used
    google for hours to search but failed to find GB2312 charset
    file out.
    2. I think the charset table file is very big and I doubted
    whether I can loaded it into a String or StringBuffer? Anyone
    have some solutions? How to load a very big file and randomly
    select several characters from it?
    Have I made myself understood?
    Thanks in advance,
    George

    The following can give the correspondence between GB2312 encoded byte arrays and characters (in hexadecimal integer expression).
    import java.nio.charset.*;
    import java.io.*;
    public class GBs{
    static String convert() throws java.io.UnsupportedEncodingException{
    StringBuffer buffer = new StringBuffer();
    String l_separator = System.getProperty("line.separator");
    Charset chset = Charset.forName("EUC_CN");// GB2312 is an alias of this encoding
    CharsetEncoder encoder = chset.newEncoder();
    int[] indices = new int[Character.MAX_VALUE+1];
    for(int j=0;j<indices.length;j++){
           indices[j]=0;
    for(int j=0;j<=Character.MAX_VALUE;j++){
        if(encoder.canEncode((char)j)) indices[j]=1;
    byte[] encoded;
    String data;
    for(int j=0;j<indices.length;j++) {
         if(indices[j]==1) {
                encoded =(Character.toString((char)j)).getBytes("EUC_CN");
                          for(int q=0;q<encoded.length;q++){
                          buffer.append(Byte.toString(encoded[q]));
                          buffer.append(" ");
                buffer.append(": 0x");buffer.append(Integer.toHexString(j));
                buffer.append(l_separator);
        return buffer.toString();
    //the following is for testing
    /*public static void main(String[] args) throws java.lang.Exception{
       String str = GBs.convert();
       System.out.println(str);*/

Maybe you are looking for

  • CRM Delta Extraction Problem

    Hi, I have my standard DS and I am able to see the data in RSA3 but when I do a delta load it is returning 0 from 0 records. How do I enable delta for this DS (This is a CRM DS) Thanks & Regards.

  • MacBook Pro C2D 17" auto restarts

    Got a MBP 17' So far when I put it to sleep by closing the lid the MBP restarts. only has happened 2x Both times it was asleep and I heard the start chime, opened it it was restarting. anyone else run into this?

  • Cann't run example of transformXML in XML dic of jstl1.1 standard-examples

    Today while learning JSP's transform mechanism using JSTL, i found that the example of transformXML in XML dic of jstl1.1 standard-examples could not be run, the error message followed as: javax.servlet.ServletException: org/apache/xml/serializer/Ser

  • Facetime missing in ipad mini iOS 7

    facetime missing in ipad mini iOS 7

  • Remote Desktop Client Update 3.7.0

    I'm using a 2012 MacBook Pro with OS X Mountain Lion 10.8.5. When I visited the Mac App Store today, there was an Apple software update available for download - Remote Desktop Client Update 3.7.0. I don't own or use Apple Remote Desktop and to my kno