Attempt to fix selector memeory leak. Add update checker
This commit is contained in:
105
common/src/main/java/com/stardust/pio/PReadableTextFile.java
Normal file
105
common/src/main/java/com/stardust/pio/PReadableTextFile.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package com.stardust.pio;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/4/1.
|
||||
*/
|
||||
|
||||
public class PReadableTextFile extends PFile {
|
||||
|
||||
private BufferedReader mBufferedReader;
|
||||
private FileInputStream mFileInputStream;
|
||||
private int mBufferingSize;
|
||||
private String mEncoding;
|
||||
|
||||
public PReadableTextFile(String path) {
|
||||
this(path, PFile.DEFAULT_ENCODING);
|
||||
}
|
||||
|
||||
public PReadableTextFile(String path, String encoding) {
|
||||
this(path, encoding, -1);
|
||||
}
|
||||
|
||||
public PReadableTextFile(String path, String encoding, int bufferingSize) {
|
||||
mEncoding = encoding;
|
||||
mBufferingSize = bufferingSize;
|
||||
try {
|
||||
mFileInputStream = new FileInputStream(path);
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ensureBufferReader() {
|
||||
if (mBufferedReader == null) {
|
||||
try {
|
||||
if (mBufferingSize == -1)
|
||||
mBufferedReader = new BufferedReader(new InputStreamReader(mFileInputStream, mEncoding));
|
||||
else
|
||||
mBufferedReader = new BufferedReader(new InputStreamReader(mFileInputStream, mEncoding), mBufferingSize);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public String read() {
|
||||
try {
|
||||
byte[] data = new byte[mFileInputStream.available()];
|
||||
mFileInputStream.read(data);
|
||||
return new String(data, mEncoding);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public String read(int size) {
|
||||
ensureBufferReader();
|
||||
try {
|
||||
char[] chars = new char[size];
|
||||
int len = mBufferedReader.read(chars);
|
||||
return new String(chars, 0, len);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public String readline() {
|
||||
ensureBufferReader();
|
||||
try {
|
||||
return mBufferedReader.readLine();
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public String[] readlines() {
|
||||
ensureBufferReader();
|
||||
List<String> lines = new ArrayList<>();
|
||||
try {
|
||||
while (mBufferedReader.ready()) {
|
||||
lines.add(mBufferedReader.readLine());
|
||||
}
|
||||
return lines.toArray(new String[lines.size()]);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void close() {
|
||||
try {
|
||||
if (mBufferedReader != null) {
|
||||
mBufferedReader.close();
|
||||
} else {
|
||||
mFileInputStream.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user