package com.stardust.pio;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;
/**
* Created by Stardust on 2017/4/1.
*/
public class PWritableTextFile extends PFile implements Closeable {
public static PWritableTextFile open(String path, String encoding, int bufferSize) {
return new PWritableTextFile(path, encoding, bufferSize, false);
}
public static PWritableTextFile open(String path, String encoding) {
return new PWritableTextFile(path, encoding);
}
public static PWritableTextFile open(String path, boolean append) {
return new PWritableTextFile(path, append);
}
public static PWritableTextFile open(String path) {
return new PWritableTextFile(path);
}
private BufferedWriter mBufferedWriter;
public PWritableTextFile(String path, String encoding, int bufferingSize, boolean append) {
if (bufferingSize <= 0) {
bufferingSize = PFile.DEFAULT_BUFFER_SIZE;
}
try {
mBufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path, append), encoding), bufferingSize);
} catch (UnsupportedEncodingException | FileNotFoundException e) {
throw new UncheckedIOException(e);
}
}
public PWritableTextFile(String path) {
this(path, PFile.DEFAULT_ENCODING, PFile.DEFAULT_BUFFER_SIZE, false);
}
public PWritableTextFile(String path, boolean append) {
this(path, PFile.DEFAULT_ENCODING, PFile.DEFAULT_BUFFER_SIZE, append);
}
public PWritableTextFile(String path, int bufferSize) {
this(path, PFile.DEFAULT_ENCODING, bufferSize, false);
}
public PWritableTextFile(String path, String encoding) {
this(path, encoding, DEFAULT_BUFFER_SIZE, false);
}
public PWritableTextFile(String path, String encoding, boolean append) {
this(path, encoding, DEFAULT_BUFFER_SIZE, append);
}
public PWritableTextFile(String path, String encoding, int bufferSize) {
this(path, encoding, bufferSize, false);
}
public void write(String str) {
try {
mBufferedWriter.write(str);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public void writeline(String line) {
try {
mBufferedWriter.write(line);
mBufferedWriter.newLine();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public void writelines(String[] lines) {
writelines(Arrays.asList(lines));
}
public void writelines(List<String> lines) {
for (String line : lines) {
writeline(line);
}
}
public void close() {
try {
mBufferedWriter.close();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public void flush() {
try {
mBufferedWriter.flush();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}