1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2015-04-27 00:27:52 -04:00
parent 299e19d455
commit f4b95f5ce6
126 changed files with 1840 additions and 671 deletions

View File

@@ -5,7 +5,6 @@
<classpathentry kind="src" path="src_100_interface"/>
<classpathentry kind="src" path="src_110_primitive"/>
<classpathentry kind="src" path="src_120_basicDataType"/>
<classpathentry kind="src" path="src_130_crt"/>
<classpathentry kind="src" path="src_140_list"/>
<classpathentry kind="src" path="src_150_text"/>
<classpathentry kind="src" path="src_160_hash"/>

View File

@@ -39,10 +39,7 @@ public class IoEngine_system extends IoEngine_base {
@Override public void DeleteFil_api(IoEngine_xrg_deleteFil args) {
Io_url url = args.Url();
File fil = Fil_(url);
if (!Fil_Exists(fil)) {
if (args.MissingFails()) throw IoErr.FileNotFound("delete", url);
else return;
}
if (!Fil_Exists(fil)) return;
MarkFileWritable(fil, url, args.ReadOnlyFails(), "DeleteFile");
DeleteFil_lang(fil, url);
}
@@ -68,8 +65,8 @@ public class IoEngine_system extends IoEngine_base {
// write text
try {fc.write(ByteBuffer.wrap(textBytes));}
catch (IOException e) {
Closeable_Close(fc, url, false);
Closeable_Close(fos, url, false);
Closeable_close(fc, url, false);
Closeable_close(fos, url, false);
throw Err_.err_key_(e, IoEngineArgs._.Err_IoException, "write data to file failed").Add("url", url.Xto_api());
}
if (!Op_sys.Cur().Tid_is_drd()) {
@@ -79,11 +76,10 @@ public class IoEngine_system extends IoEngine_base {
}
finally {
// cleanup
Closeable_Close(fc, url, false);
Closeable_Close(fos, url, false);
Closeable_close(fc, url, false);
Closeable_close(fos, url, false);
}
}
@SuppressWarnings("resource")
@Override public String LoadFilStr(IoEngine_xrg_loadFilStr args) {
Io_url url = args.Url(); String url_str = url.Xto_api();
boolean file_exists = ExistsFil_api(url); // check if file exists first to avoid throwing exception; note that most callers pass Missing_ignored; DATE:2015-02-24
@@ -104,7 +100,7 @@ public class IoEngine_system extends IoEngine_base {
InputStreamReader reader = null;
try {reader = new InputStreamReader(stream, IoEngineArgs._.LoadFilStr_Encoding);}
catch (UnsupportedEncodingException e) {
Closeable_Close(stream, url_str, false);
Closeable_close(stream, url_str, false);
throw Err_text_unsupported_encoding(IoEngineArgs._.LoadFilStr_Encoding, "", url_str, e);
}
@@ -117,8 +113,11 @@ public class IoEngine_system extends IoEngine_base {
while (true) {
try {pos = reader.read(readerBuffer);}
catch (IOException e) {
Closeable_Close(stream, url_str, false);
Closeable_Close(reader, url_str, false);
try {
stream.close();
reader.close();
}
catch (IOException e2) {}
throw Err_.err_key_(e, IoEngineArgs._.Err_IoException, "read data from file failed").Add("url", url_str).Add("pos", pos);
}
if (pos == -1) break;
@@ -126,8 +125,8 @@ public class IoEngine_system extends IoEngine_base {
}
// cleanup
Closeable_Close(stream, url_str, false);
Closeable_Close(reader, url_str, false);
Closeable_close(stream, url_str, false);
Closeable_close(reader, url_str, false);
return sw.toString();
}
@Override public boolean ExistsDir(Io_url url) {return new File(url.Xto_api()).exists();}
@@ -272,10 +271,10 @@ public class IoEngine_system extends IoEngine_base {
while (pos < count) {
try {read = trgChannel.transferFrom(srcChannel, pos, transferSize);}
catch (IOException e) {
Closeable_Close(srcChannel, srcUrl, false);
Closeable_Close(trgChannel, trgUrl, false);
Closeable_Close(srcStream, srcUrl, false);
Closeable_Close(trgStream, srcUrl, false);
Closeable_close(srcChannel, srcUrl, false);
Closeable_close(trgChannel, trgUrl, false);
Closeable_close(srcStream, srcUrl, false);
Closeable_close(trgStream, srcUrl, false);
throw Err_.err_key_(e, IoEngineArgs._.Err_IoException, "transfer data failed").Add("src", srcUrl.Xto_api()).Add("trg", trgUrl.Xto_api());
}
if (read == -1) break;
@@ -286,10 +285,10 @@ public class IoEngine_system extends IoEngine_base {
}
finally {
// cleanup
Closeable_Close(srcChannel, srcUrl, false);
Closeable_Close(trgChannel, trgUrl, false);
Closeable_Close(srcStream, srcUrl, false);
Closeable_Close(trgStream, srcUrl, false);
Closeable_close(srcChannel, srcUrl, false);
Closeable_close(trgChannel, trgUrl, false);
Closeable_close(srcStream, srcUrl, false);
Closeable_close(trgStream, srcUrl, false);
}
UpdateFilModifiedTime(trgUrl, QueryFil(srcUrl).ModifiedTime()); // must happen after file is closed
}
@@ -356,8 +355,8 @@ public class IoEngine_system extends IoEngine_base {
XferDir(IoEngine_xrg_xferDir.copy_(src, trg));
}
}
protected static void Closeable_Close(Closeable closeable, Io_url url, boolean throwErr) {Closeable_Close(closeable, url.Xto_api(), throwErr);}
protected static void Closeable_Close(Closeable closeable, String url_str, boolean throwErr) {
protected static void Closeable_close(Closeable closeable, Io_url url, boolean throwErr) {Closeable_close(closeable, url.Xto_api(), throwErr);}
protected static void Closeable_close(Closeable closeable, String url_str, boolean throwErr) {
if (closeable == null) return;
try {closeable.close();}
catch (IOException e) {

View File

@@ -132,7 +132,7 @@ class IoStream_base implements IoStream {
bfr.Clear();
}
@gplx.Virtual public void Rls() {
IoEngine_system.Closeable_Close(under, url, true);
IoEngine_system.Closeable_close(under, url, true);
}
RandomAccessFile under; boolean mode_is_append; byte mode;
public static IoStream_base rdr_wrapper_() {return new IoStream_base();}

View File

@@ -71,7 +71,6 @@ abstract class Io_stream_wtr_base implements Io_stream_wtr {
public Io_url Url() {return url;} public Io_stream_wtr Url_(Io_url v) {url = v; trg_bfr = null; return this;} Io_url url;
public void Trg_bfr_(Bry_bfr v) {trg_bfr = v;} Bry_bfr trg_bfr; java.io.ByteArrayOutputStream mem_stream;
public byte[] Xto_ary_and_clear() {return trg_bfr.Xto_bry_and_clear();}
@SuppressWarnings("resource") // rely on OutputStream to close bry_stream
public Io_stream_wtr Open() {
java.io.OutputStream bry_stream = null;
if (trg_bfr == null) {