Description
Read a text file into a String, optionally limiting the length.
License
Apache License
Parameter
Parameter | Description |
---|
file | to read (will not seek, so things like /proc files are OK) |
max | length (positive for head, negative of tail, 0 for no limit) |
ellipsis | to add of the file was truncated (can be null) |
Exception
Parameter | Description |
---|
IOException | if something goes wrong reading the file |
Return
the contents of the file, possibly truncated
Declaration
public static String readTextFile(File file, int max, String ellipsis) throws IOException
Method Source Code
//package com.java2s;
/*/*from ww w . ja va 2 s . co m*/
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Main {
/**
* Read a text file into a String, optionally limiting the length.
* @param file to read (will not seek, so things like /proc files are OK)
* @param max length (positive for head, negative of tail, 0 for no limit)
* @param ellipsis to add of the file was truncated (can be null)
* @return the contents of the file, possibly truncated
* @throws IOException if something goes wrong reading the file
*/
public static String readTextFile(File file, int max, String ellipsis) throws IOException {
InputStream input = new FileInputStream(file);
try {
if (max > 0) { // "head" mode: read the first N bytes
byte[] data = new byte[max + 1];
int length = input.read(data);
if (length <= 0)
return "";
if (length <= max)
return new String(data, 0, length);
if (ellipsis == null)
return new String(data, 0, max);
return new String(data, 0, max) + ellipsis;
} else if (max < 0) { // "tail" mode: read it all, keep the last N
int len;
boolean rolled = false;
byte[] last = null, data = null;
do {
if (last != null)
rolled = true;
byte[] tmp = last;
last = data;
data = tmp;
if (data == null)
data = new byte[-max];
len = input.read(data);
} while (len == data.length);
if (last == null && len <= 0)
return "";
if (last == null)
return new String(data, 0, len);
if (len > 0) {
rolled = true;
System.arraycopy(last, len, last, 0, last.length - len);
System.arraycopy(data, 0, last, last.length - len, len);
}
if (ellipsis == null || !rolled)
return new String(last);
return ellipsis + new String(last);
} else { // "cat" mode: read it all
ByteArrayOutputStream contents = new ByteArrayOutputStream();
int len;
byte[] data = new byte[1024];
do {
len = input.read(data);
if (len > 0)
contents.write(data, 0, len);
} while (len == data.length);
return contents.toString();
}
} finally {
input.close();
}
}
}
Related
- getFileContents(String pathToFile)
- getFileContents(String pFileName)
- loadAsString(String location)
- readFile(String filePath)
- readFile(String path)
- readTextFile(final DataInputStream is)
- readTextFile(final String path, final String enc)
- readTextFile(InputStream inStream)
- readTextFile(String fileName)