Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 months ago.
Improve this question
I have a piece of code that is reading JSON data from an input stream and converting it to POJOs (using Jackson). Sometimes, the data will fail to deserialize and it's difficult to troubleshoot. What would be a good mechanism to see the line-by-line input stream in log4j? Are there other tools/techniques that can help the troubleshooting?
I assume that you are already logging the exceptions and stacktraces that you are getting, and that they are not providing enough context to track down the problems.
Jackson doesn't have any internal logging that you could "tap into".
So to log the JSON input line by line, you will need to write (or find) an InputStream or Reader that wraps your source InputStream or Reader and logs each line that is read. Here are a couple of examples that you may be able to use:
https://stackoverflow.com/a/34955334/139985
Logging everything that goes through an InputStream
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Improve this question
I have a definition of a Stream such as: "They are wrappers around a data source, allowing us to operate with that data source and making bulk processing convenient and fast. "
Can someone give an example and just a basic explanation of how it works such that Stream makes "bulk processing convenient and fast"?
Thank you!
Files.newBufferedReader("/tmp/foo").lines().map(...)...collect(...);
// or
BufferedReader reader = Files.newBufferedReader("/tmp/foo");
Stream<String> stream = reader.lines();
Collection<String> result = stream.map(...)...collect(...);
Is a convenient way to process a text file using a Stream.
But the work of making it fast/efficient is being done by the BufferedReader, not the Stream.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I am making an instant messenger in Java and I want to add the ability to send images as well as text. The first thing that came to mind was to make new Sockets and input and output streams. Firstly, will this work and is it good practice. Secondly, if this doesn't work then how does the receiving end of the message figure out if what it is receiving is an image or a String?
An output stream contains bytes, which you have to build into messages. The reader knows which type of data you sent, because the sender will have to say which type of message it is sending.
e.g. if you write say "image" as a string you could assume that what follows it is an image.
Remember that you're not transmitting Strings or Images, you're exchanging Messages. A message should have a content or message type associated with it.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I need to read the content of a large file. For that I Googled on it and found so many methods and resources. But I'm still confused which is the method to read the large files (Factors need to be consider in my case are memory allocation, performance, large file )
Using FileChannel
using Files.readAllLines
using BufferedReader
Can anyone guide on this?
Your best option is to read the file lazily. Fetch each line one at a time and process.
Example:-
Stream<String> lines = Files.lines(Paths.get("C:/files", "yourfile.txt"));
Then process the lines afterwords.
From the official documentation:-
public static Stream<String> lines(Path path, Charset cs) throws IOException
Read all lines from a file as a Stream. Unlike readAllLines, this
method does not read all lines into a List, but instead populates
lazily as the stream is consumed.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I want to read a file as a string. Every line of this file contains information that I use to construct new objects.
I wonder what is the fastest way of doing that. Obviously, there are two options. The first is to read the whole file and create the objects by reading the string. The second is to read the data line by line and create a new object after every readLine(). Is there a real performance deference or I can go either way?
If there is an object every couple of lines and it won't affect anything else after or before it I would go for the line by line approach. However, if there is parsing involved with nested objects or a more complicated file structure read it all first
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
How to load JSON from socket and parse values of elements ?
Take a look at the Java tutorial on Reading from a Socket.
You can then use a JSON parser such as google-gson to convert the JSON string to a Java object.
Reading from a socket is a kind of basic java
About JSON, if you need performance I recommend you to take a look to Jackson ( http://jackson.codehaus.org/ ) as it's one of the fastest implementation available
(see at http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking )
Have a look at REST Assured. It makes it very easy to parse json data using JsonPath.