java读取文件到字符串_Java读取文件到字符串

java读取文件到字符串

Sometimes while working with files, we need to read the file to String in Java. Today we will look into various ways to read the file to String in Java.

有时在处理文件时,我们需要将文件读取为Java中的String。 今天,我们将研究使用Java将文件读取到String的各种方法。

Java读取文件到字符串 (Java read file to String)

There are many ways to read a file to String in Java. We will explore the following ways in this tutorial.

在Java中,有很多方法可以将文件读取为String。 在本教程中,我们将探索以下方式。

  1. Java read file to String using BufferedReader

    Java使用BufferedReader将文件读取为String
  2. Read file to String in java using FileInputStream

    使用FileInputStream在Java中将文件读取为String
  3. Java read file to string using Files class

    Java使用Files类文件读取为字符串
  4. Read file to String using Scanner class

    使用Scanner类将文件读取到String
  5. Java read file to string using Apache Commons IO FileUtils class

    Java使用Apache Commons IO FileUtils类将文件读取为字符串

Now let’s look into these classes and read a file to String.

现在,让我们研究这些类,然后将文件读取到String。

Java使用BufferedReader将文件读取为String (Java read file to String using BufferedReader)

We can use BufferedReader readLine method to read a file line by line. All we have to do is append these to a StringBuilder object with newline character. Below is the code snippet to read the file to String using BufferedReader.

我们可以使用BufferedReader readLine方法逐行读取文件。 我们要做的就是将这些附加到带有换行符的StringBuilder对象上。 下面是使用BufferedReader将文件读取为String的代码片段。

BufferedReader reader = new BufferedReader(new FileReader(fileName));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
String ls = System.getProperty("line.separator");
while ((line = reader.readLine()) != null) {
	stringBuilder.append(line);
	stringBuilder.append(ls);
}
// delete the last new line separator
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
reader.close();

String content = stringBuilder.toString();

There is another efficient way to read file to String using BufferedReader and char array.

还有一种使用BufferedReader和char数组将文件读取到String的有效方法。

BufferedReader reader = new BufferedReader(new FileReader(fileName));
StringBuilder stringBuilder = new StringBuilder();
char[] buffer = new char[10];
while (reader.read(buffer) != -1) {
	stringBuilder.append(new String(buffer));
	buffer = new char[10];
}
reader.close();

String content = stringBuilder.toString();

使用FileInputStream在Java中将文件读取为String (Read file to String in java using FileInputStream)

We can use FileInputStream and byte array to read file to String. You should use this method to read non-char based files such as image, video etc.

我们可以使用FileInputStream和字节数组将文件读取为String。 您应该使用此方法读取非基于字符的文件,例如图像,视频等。

FileInputStream fis = new FileInputStream(fileName);
byte[] buffer = new byte[10];
StringBuilder sb = new StringBuilder();
while (fis.read(buffer) != -1) {
	sb.append(new String(buffer));
	buffer = new byte[10];
}
fis.close();

String content = sb.toString();

Java使用Files类将文件读取为字符串 (Java read file to string using Files class)

We can use Files utility class to read all the file content to string in a single line of code.

我们可以使用Files实用程序类将所有文件内容读取为一行代码。

String content = new String(Files.readAllBytes(Paths.get(fileName)));

使用Scanner类将文件读取到String (Read file to String using Scanner class)

The scanner class is a quick way to read a text file to string in java.

扫描程序类是一种将文本文件读取为Java中字符串的快速方法。

Scanner scanner = new Scanner(Paths.get(fileName), StandardCharsets.UTF_8.name());
String content = scanner.useDelimiter("\\A").next();
scanner.close();

Java使用Apache Commons IO FileUtils类将文件读取为字符串 (Java read file to string using Apache Commons IO FileUtils class)

If you are using Apache Commons IO in your project, then this is a simple and quick way to read the file to string in java.

如果您在项目中使用Apache Commons IO,那么这是一种将文件读取为Java中字符串的简单快捷方法。

String content = FileUtils.readFileToString(new File(fileName), StandardCharsets.UTF_8);

Java读取文件到字符串的例子 (Java read file to String example)

Here is the final program with proper exception handling and showing all the different ways to read a file to string.

这是具有适当异常处理的最终程序,该程序显示了将文件读取为字符串的所有不同方式。

package com.journaldev.files;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;

import org.apache.commons.io.FileUtils;

public class JavaReadFileToString {

	/**
	 * This class shows different ways to read complete file contents to String
	 * 
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) {
		String fileName = "/Users/pankaj/Downloads/myfile.txt";

		String contents = readUsingScanner(fileName);
		System.out.println("*****Read File to String Using Scanner*****\n" + contents);

		contents = readUsingApacheCommonsIO(fileName);
		System.out.println("*****Read File to String Using Apache Commons IO FileUtils*****\n" + contents);

		contents = readUsingFiles(fileName);
		System.out.println("*****Read File to String Using Files Class*****\n" + contents);

		contents = readUsingBufferedReader(fileName);
		System.out.println("*****Read File to String Using BufferedReader*****\n" + contents);

		contents = readUsingBufferedReaderCharArray(fileName);
		System.out.println("*****Read File to String Using BufferedReader and char array*****\n" + contents);

		contents = readUsingFileInputStream(fileName);
		System.out.println("*****Read File to String Using FileInputStream*****\n" + contents);

	}

	private static String readUsingBufferedReaderCharArray(String fileName) {
		BufferedReader reader = null;
		StringBuilder stringBuilder = new StringBuilder();
		char[] buffer = new char[10];
		try {
			reader = new BufferedReader(new FileReader(fileName));
			while (reader.read(buffer) != -1) {
				stringBuilder.append(new String(buffer));
				buffer = new char[10];
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null)
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}

		return stringBuilder.toString();
	}

	private static String readUsingFileInputStream(String fileName) {
		FileInputStream fis = null;
		byte[] buffer = new byte[10];
		StringBuilder sb = new StringBuilder();
		try {
			fis = new FileInputStream(fileName);

			while (fis.read(buffer) != -1) {
				sb.append(new String(buffer));
				buffer = new byte[10];
			}
			fis.close();

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fis != null)
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return sb.toString();
	}

	private static String readUsingBufferedReader(String fileName) {
		BufferedReader reader = null;
		StringBuilder stringBuilder = new StringBuilder();

		try {
			reader = new BufferedReader(new FileReader(fileName));
			String line = null;
			String ls = System.getProperty("line.separator");
			while ((line = reader.readLine()) != null) {
				stringBuilder.append(line);
				stringBuilder.append(ls);
			}
			// delete the last ls
			stringBuilder.deleteCharAt(stringBuilder.length() - 1);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null)
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}

		return stringBuilder.toString();
	}

	private static String readUsingFiles(String fileName) {
		try {
			return new String(Files.readAllBytes(Paths.get(fileName)));
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}

	private static String readUsingApacheCommonsIO(String fileName) {
		try {
			return FileUtils.readFileToString(new File(fileName), StandardCharsets.UTF_8);
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}

	private static String readUsingScanner(String fileName) {
		Scanner scanner = null;
		try {
			scanner = new Scanner(Paths.get(fileName), StandardCharsets.UTF_8.name());
			// we can use Delimiter regex as "\\A", "\\Z" or "\\z"
			String data = scanner.useDelimiter("\\A").next();
			return data;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		} finally {
			if (scanner != null)
				scanner.close();
		}

	}

}

You can use any of the above ways to read file content to string in java. However, it’s not advisable if the file size is huge because you might face out of memory errors.

您可以使用上述任何一种方法来将文件内容读取为java中的字符串。 但是,如果文件太大,则不建议这样做,因为您可能会遇到内存不足的错误。

GitHub Repository. GitHub存储库中签出更多Java IO示例。

References:

参考文献:

翻译自: https://www.journaldev.com/875/java-read-file-to-string

java读取文件到字符串

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页