
com.ochafik.io.ReadText Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jnaerator Show documentation
Show all versions of jnaerator Show documentation
OSGi bundle for JNAerator
/*
Copyright (c) 2009-2011 Olivier Chafik, All Rights Reserved
This file is part of JNAerator (http://jnaerator.googlecode.com/).
JNAerator is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
JNAerator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JNAerator. If not, see .
*/
package com.ochafik.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.regex.Pattern;
//import javax.net.ssl.HostnameVerifier;
//import javax.net.ssl.HttpsURLConnection;
//import javax.net.ssl.SSLSession;
import com.ochafik.util.string.RegexUtils;
public class ReadText {
public static final String readText(Reader in) throws IOException {
int len;
char ch[]=new char[1024];
StringBuffer b=new StringBuffer();
while ((len=in.read(ch))>0) b.append(ch,0,len);
return b.toString();
}
public static final String readText(File f) {
if (f == null)
return null;
try {
BufferedReader in=new BufferedReader(new FileReader(f));
String l;
java.lang.StringBuffer buff=new java.lang.StringBuffer((int)f.length());
boolean first = true;
while ((l=in.readLine())!=null) {
if (first)
first = false;
else
buff.append('\n');
buff.append(l);
}
return buff.toString();
} catch (Exception except) {
except.printStackTrace();
return null;
}
}
public static final void writeProperties(Properties properties, File file) throws IOException {
File parentFile = file.getParentFile();
if (!parentFile.exists()) parentFile.mkdirs();
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
properties.store(out, file.getName());
out.close();
}
public static final Properties readProperties(File file, boolean failIfNotExists) throws IOException {
Properties properties = new Properties();
if (!file.exists()) {
if (failIfNotExists) {
return null;
}
} else {
InputStream in = new BufferedInputStream(new FileInputStream(file));
properties.load(in);
in.close();
}
return properties;
}
private static final Pattern charsetPattern = Pattern.compile(";\\s*charset\\s*=\\s*([\\w-_]+)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
public static final String readText(URL u) throws IOException {
if (u == null) return null;
String encoding = null;
URLConnection con = u.openConnection();
// if (con instanceof HttpsURLConnection) {
// ((HttpsURLConnection)con).setHostnameVerifier(new HostnameVerifier() {
// public boolean verify(String hostname, SSLSession session) {
// return true;
// }
// });
// }
if (con instanceof HttpURLConnection) {
String contentType = con.getContentType();
encoding = RegexUtils.findFirst(contentType, charsetPattern, 1);
}
InputStream in = con.getInputStream();
String text = readText(in, encoding);
in.close();
return text;
}
static Pattern[] embeddedCharsetPatterns = new Pattern[] {
Pattern.compile("CONTENT\\s*=\\s*\"text/\\w+;\\s*charset\\s*=\\s*([^\";\\s]+)\\s*\"", Pattern.CASE_INSENSITIVE | Pattern.DOTALL),
Pattern.compile("\\s*xml\\s+[^>]*encoding\\s*=\\s*\"([^\"]+)\"", Pattern.CASE_INSENSITIVE | Pattern.DOTALL),
};
private static String readText(InputStream in, String encoding) throws IOException {
if (in == null)
return null;
if (encoding == null) {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
IOUtils.readWrite(in, bout);
byte[] bytes = bout.toByteArray();
String ascii = new String(bytes, "ascii");
for (Pattern charsetPat : embeddedCharsetPatterns) {
encoding = RegexUtils.findFirst(ascii, charsetPat, 1);
if (encoding != null)
break;
}
if (encoding != null) {
try {
return new String(bytes, encoding);
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
}
return new String(bytes);
} else {
BufferedReader rin = new BufferedReader(encoding == null ? new InputStreamReader(in) : new InputStreamReader(in, encoding));
String l;
StringBuffer buff=new StringBuffer();
boolean first = true;
while ((l = rin.readLine()) != null) {
if (first)
first = false;
else
buff.append('\n');
buff.append(l);
}
return buff.toString();
}
}
public static final String readText(InputStream in) throws IOException {
return readText(in, null);
}
public static final List readLines(String s) throws IOException {
return readLines(new FileReader(s));
}
public static final List readLines(URL u) throws IOException {
InputStream in = u.openStream();
List r = readLines(in);
in.close();
return r;
}
public static final List readLines(InputStream in) throws IOException {
if (in == null)
return null;
List r = readLines(new InputStreamReader(in));
in.close();
return r;
}
public static final List readLines(Reader r) throws IOException {
List v=new ArrayList();
BufferedReader in=new BufferedReader(r);
String l;
while ((l=in.readLine())!=null) //if (!(l=l.trim()).equals(""))
v.add(l);
return v;
}
public static final String[] readLinesArray(String s) throws IOException {
List v=readLines(s);
String ret[]=new String[v.size()];
int i=0;
for (String line : v) {
ret[i++]=line;
}
return ret;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy