From 69d1427552c6e58c87b17df875255802b854f623 Mon Sep 17 00:00:00 2001 From: Brettflan Date: Tue, 28 Jun 2011 22:43:28 -0500 Subject: [PATCH] after testing, found that these changes cause encoding problems on some setups when the JSON files are read; tried for a bit to find a solution, but gave up since I was having to test on my live server (test VM server was working fine) so, reverting for now --- src/org/mcteam/factions/util/DiscUtil.java | 46 +++++----------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/src/org/mcteam/factions/util/DiscUtil.java b/src/org/mcteam/factions/util/DiscUtil.java index f8c3864a..69762008 100644 --- a/src/org/mcteam/factions/util/DiscUtil.java +++ b/src/org/mcteam/factions/util/DiscUtil.java @@ -3,59 +3,31 @@ package org.mcteam.factions.util; import java.io.*; /** - * Hard disk related methods such as read and write. + * Harddisc related methods such as read and write. */ public class DiscUtil { /** * Convenience function for writing a string to a file. */ public static void write(File file, String content) throws IOException { - BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false), "UTF-8")); + BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false), "UTF8")); out.write(content); out.close(); } - + /** * Convenience function for reading a file as a string. */ public static String read(File file) throws IOException { -// BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); - InputStream inStream = new FileInputStream(file); - BufferedReader in = new BufferedReader(inputStreamToReader(inStream)); - StringBuilder ret = new StringBuilder(); - + BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); + String ret = new String(new byte[0], "UTF-8"); + String line; while ((line = in.readLine()) != null) { - ret.append(line); + ret += line; } + in.close(); - - return ret.toString(); - } - - /** - * Helper method for determining and using correct encoding when reading data, - * since so many people/text editors seem to mess up the encoding; hopefully this will help - * Adapted from: http://blog.publicobject.com/2010/08/handling-byte-order-mark-in-java.html - */ - public static Reader inputStreamToReader(InputStream in) throws IOException { - if (in.available() < 3) - return new InputStreamReader(in); - int byte1 = in.read(); - int byte2 = in.read(); - if (byte1 == 0xFF && byte2 == 0xFE) { - return new InputStreamReader(in, "UTF-16LE"); - } else if (byte1 == 0xFF && byte2 == 0xFF) { - return new InputStreamReader(in, "UTF-16BE"); - } else { - int byte3 = in.read(); - if (byte1 == 0xEF && byte2 == 0xBB && byte3 == 0xBF) { - return new InputStreamReader(in, "UTF-8"); - } else { - byte[] first3 = {(byte)byte1, (byte)byte2, (byte)byte3}; - InputStream firstChars = new ByteArrayInputStream(first3); - return new InputStreamReader(new SequenceInputStream(firstChars, in)); - } - } + return ret; } }