Showing posts with label read file. Show all posts
Showing posts with label read file. Show all posts

Sunday, 12 January 2020

Java read file content as string in one line


Below snippet read file content as string.
new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);

App.java

package com.sample.app;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {

 public static String readFileAsString(String filePath) throws IOException {
  if (filePath == null || filePath.isEmpty()) {
   return null;
  }

  return new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
 }

 public static void main(String args[]) throws IOException {
  String filePath = "logfile.txt";
  String data = readFileAsString(filePath);
  System.out.println(data);
 }

}


You may like

Thursday, 2 January 2020

Java: Read file content as string

Approach 1: Using Scanner
String content = new Scanner(new File(filePath)).useDelimiter("\\Z").next();

Approach 2: Using Files.readAllBytes.
String content = new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);

Approach 3: Using FileInputStream.
public static String readFileContentViaStream(String filePath) throws IOException {
 validateInput(filePath);

 try (FileInputStream fis = new FileInputStream(new File(filePath))) {
  StringBuilder builder = new StringBuilder();

  int content;
  while ((content = fis.read()) != -1) {
   builder.append((char) content);
  }

  return builder.toString();

 }

}

Approach 4: Using FileChannel.
public static String readFileContentViaChannel(String filePath) throws IOException {
 validateInput(filePath);
 try (FileInputStream fin = new FileInputStream(filePath)) {
  FileChannel fileChannel = fin.getChannel();

  ByteBuffer buffer = ByteBuffer.allocate(1024);

  int noOfBytesRead;
  StringBuilder builder = new StringBuilder();

  while ((noOfBytesRead = fileChannel.read(buffer)) != -1) {
   String str = new String(buffer.array());
   builder.append(str);
   buffer.flip();

  }

  return builder.toString();
 }

}

Find the below working application.

App.java    
package com.sample.app;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;

public class App {

 private static void validateInput(String filePath) {
  if (filePath == null || filePath.isEmpty()) {
   throw new IllegalArgumentException("filePath is null or empty");
  }

  File file = new File(filePath);

  if (!file.exists()) {
   throw new RuntimeException("File is not exist");
  }

  if (file.isDirectory()) {
   throw new RuntimeException("File is a directory");
  }
 }

 public static String readFileContentViaScanner(String filePath) throws FileNotFoundException {
  validateInput(filePath);
  return new Scanner(new File(filePath)).useDelimiter("\\Z").next();
 }

 public static String readFileContentViaReadingAllBytes(String filePath) throws IOException {
  validateInput(filePath);
  return new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
 }

 public static String readFileContentViaStream(String filePath) throws IOException {
  validateInput(filePath);

  try (FileInputStream fis = new FileInputStream(new File(filePath))) {
   StringBuilder builder = new StringBuilder();

   int content;
   while ((content = fis.read()) != -1) {
    builder.append((char) content);
   }

   return builder.toString();

  }

 }

 public static String readFileContentViaChannel(String filePath) throws IOException {
  validateInput(filePath);
  try (FileInputStream fin = new FileInputStream(filePath)) {
   FileChannel fileChannel = fin.getChannel();

   ByteBuffer buffer = ByteBuffer.allocate(1024);

   int noOfBytesRead;
   StringBuilder builder = new StringBuilder();

   while ((noOfBytesRead = fileChannel.read(buffer)) != -1) {
    String str = new String(buffer.array());
    builder.append(str);
    buffer.flip();

   }

   return builder.toString();
  }

 }

 public static void main(String args[]) throws IOException {
  String filePath = "data.txt";

  String fileContent1 = readFileContentViaScanner(filePath);
  String fileContent2 = readFileContentViaReadingAllBytes(filePath);
  String fileContent3 = readFileContentViaStream(filePath);
  String fileContent4 = readFileContentViaChannel(filePath);

  System.out.println(fileContent1);
  System.out.println(fileContent2);
  System.out.println(fileContent3);
  System.out.println(fileContent4);
 }

}

You may like