Read from FileChannel with java nio
up vote
0
down vote
favorite
Can you show me a simple example to read from a file named example.txt and put all contents into a string in my java program using java NIO?
Following is what I'm using for the moment:
FileChannel inChannel = FileChannel.open(Paths.get(file),StandardOpenOption.READ);
CharBuffer buf=ByteBuffer.allocate(1024).asCharBuffer();
while(inChannel.read(buf)!=-1) {
buf.flip();
while(buf.hasRemaining()) {
//append to a String
buf.clear();
}
}
java string io nio java-io
add a comment |
up vote
0
down vote
favorite
Can you show me a simple example to read from a file named example.txt and put all contents into a string in my java program using java NIO?
Following is what I'm using for the moment:
FileChannel inChannel = FileChannel.open(Paths.get(file),StandardOpenOption.READ);
CharBuffer buf=ByteBuffer.allocate(1024).asCharBuffer();
while(inChannel.read(buf)!=-1) {
buf.flip();
while(buf.hasRemaining()) {
//append to a String
buf.clear();
}
}
java string io nio java-io
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Can you show me a simple example to read from a file named example.txt and put all contents into a string in my java program using java NIO?
Following is what I'm using for the moment:
FileChannel inChannel = FileChannel.open(Paths.get(file),StandardOpenOption.READ);
CharBuffer buf=ByteBuffer.allocate(1024).asCharBuffer();
while(inChannel.read(buf)!=-1) {
buf.flip();
while(buf.hasRemaining()) {
//append to a String
buf.clear();
}
}
java string io nio java-io
Can you show me a simple example to read from a file named example.txt and put all contents into a string in my java program using java NIO?
Following is what I'm using for the moment:
FileChannel inChannel = FileChannel.open(Paths.get(file),StandardOpenOption.READ);
CharBuffer buf=ByteBuffer.allocate(1024).asCharBuffer();
while(inChannel.read(buf)!=-1) {
buf.flip();
while(buf.hasRemaining()) {
//append to a String
buf.clear();
}
}
java string io nio java-io
java string io nio java-io
edited Nov 11 at 15:45
Bsquare
2,0351727
2,0351727
asked Nov 11 at 13:09
james
227
227
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01
add a comment |
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
Try this:
public static String readFile(File f, int bufSize) {
ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
char ca = new char[bufSize];
ByteBuffer bb = ByteBuffer.allocate(bufSize);
StringBuilder sb = new StringBuilder();
while(rbc.read(bb) > -1) {
CharBuffer cb = bb.asCharBuffer();
cb.flip();
cb.get(ca);
sb.append(ca);
cb.clear();
}
return sb.toString();
}
You could do without the middle man buffer ca
if writing char by char is acceptable performance wise. In which case you could simply sb.append(cb.get())
.
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Try this:
public static String readFile(File f, int bufSize) {
ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
char ca = new char[bufSize];
ByteBuffer bb = ByteBuffer.allocate(bufSize);
StringBuilder sb = new StringBuilder();
while(rbc.read(bb) > -1) {
CharBuffer cb = bb.asCharBuffer();
cb.flip();
cb.get(ca);
sb.append(ca);
cb.clear();
}
return sb.toString();
}
You could do without the middle man buffer ca
if writing char by char is acceptable performance wise. In which case you could simply sb.append(cb.get())
.
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
add a comment |
up vote
0
down vote
accepted
Try this:
public static String readFile(File f, int bufSize) {
ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
char ca = new char[bufSize];
ByteBuffer bb = ByteBuffer.allocate(bufSize);
StringBuilder sb = new StringBuilder();
while(rbc.read(bb) > -1) {
CharBuffer cb = bb.asCharBuffer();
cb.flip();
cb.get(ca);
sb.append(ca);
cb.clear();
}
return sb.toString();
}
You could do without the middle man buffer ca
if writing char by char is acceptable performance wise. In which case you could simply sb.append(cb.get())
.
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Try this:
public static String readFile(File f, int bufSize) {
ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
char ca = new char[bufSize];
ByteBuffer bb = ByteBuffer.allocate(bufSize);
StringBuilder sb = new StringBuilder();
while(rbc.read(bb) > -1) {
CharBuffer cb = bb.asCharBuffer();
cb.flip();
cb.get(ca);
sb.append(ca);
cb.clear();
}
return sb.toString();
}
You could do without the middle man buffer ca
if writing char by char is acceptable performance wise. In which case you could simply sb.append(cb.get())
.
Try this:
public static String readFile(File f, int bufSize) {
ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
char ca = new char[bufSize];
ByteBuffer bb = ByteBuffer.allocate(bufSize);
StringBuilder sb = new StringBuilder();
while(rbc.read(bb) > -1) {
CharBuffer cb = bb.asCharBuffer();
cb.flip();
cb.get(ca);
sb.append(ca);
cb.clear();
}
return sb.toString();
}
You could do without the middle man buffer ca
if writing char by char is acceptable performance wise. In which case you could simply sb.append(cb.get())
.
edited Nov 11 at 19:38
answered Nov 11 at 13:27
MeetTitan
2,4541617
2,4541617
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
add a comment |
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
accordind to eclipse
The method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
accordind to eclipse
The method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 at 14:33
@James check my edit
– MeetTitan
Nov 11 at 16:19
@James check my edit
– MeetTitan
Nov 11 at 16:19
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249051%2fread-from-filechannel-with-java-nio%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Is there a particular reason to use straight java-nio? Because being this a common operation, in most cases you better using a utility class.
– AR1
Nov 11 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 at 14:01