Read from FileChannel with java nio
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 |
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 '18 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 '18 at 14:01
add a comment |
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 '18 at 15:45
Bsquare
3,63851434
3,63851434
asked Nov 11 '18 at 13:09
jamesjames
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 '18 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 '18 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 '18 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 '18 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 '18 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 '18 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 '18 at 14:01
it is just an exercise to understand how java nio works
– james
Nov 11 '18 at 14:01
add a comment |
1 Answer
1
active
oldest
votes
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 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 at 16:19
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 at 16:19
add a comment |
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 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 at 16:19
add a comment |
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 '18 at 19:38
answered Nov 11 '18 at 13:27
MeetTitanMeetTitan
2,5091618
2,5091618
accordind to eclipseThe method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)
– james
Nov 11 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 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 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 at 16:19
accordind to eclipse
The method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)– james
Nov 11 '18 at 14:33
accordind to eclipse
The method read(ByteBuffer) in the type ReadableByteChannel is not applicable for the arguments (CharBuffer)– james
Nov 11 '18 at 14:33
@James check my edit
– MeetTitan
Nov 11 '18 at 16:19
@James check my edit
– MeetTitan
Nov 11 '18 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.
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 '18 at 13:32
it is just an exercise to understand how java nio works
– james
Nov 11 '18 at 14:01