Java Text File Read readTextFile(File file, int max, String ellipsis)

Here you can find the source of readTextFile(File file, int max, String ellipsis)

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

  1. getFileContents(String pathToFile)
  2. getFileContents(String pFileName)
  3. loadAsString(String location)
  4. readFile(String filePath)
  5. readFile(String path)
  6. readTextFile(final DataInputStream is)
  7. readTextFile(final String path, final String enc)
  8. readTextFile(InputStream inStream)
  9. readTextFile(String fileName)