Hi,
Ist zwar viel Text, ich wär aber wahnsinnig dankbar, wenn mir einer helfen könnte.
bei dem Quelltext unten seht ihr ja dann, was ich machen will, das Problem ist, ich krieg es seit Tagen nicht hin, diesen blöden InputStream in der Methode load(InputStream is) auszulesen. Es funktioniert zwar, wenn ich es mit einem TypeCast probiere (String s = (String)(ObjectOutputStream)is).read(); ), aber ich soll es halt für InputStreams im Allgemeinen machen. Dabei habe ich schon so gut wie alles probiert, was ich so gefunden habe (oder zickt einfach mein Eclipse rum?):
1. StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();
funktioniert nicht, weil Eclipse bei mir anzeigt, dass es IOUtils nicht finden kann, aber das ist doch in java.lang, oder?
Und bei den folgenden Varianten ist der String s immer leer:
2. Scanner scanner =new Scanner(is);
Scanner s = scanner.useDelimiter("\\A");
String st=s.hasNext() ? s.next():"";
3. byte[] b=new byte[is.available()];
is.read(b);
String s=new String(b);
System.out.println(s);
4. InputStreamReader isr=new InputStreamReader(is);
StringBuilder sb=new StringBuilder();
BufferedReader br=new BufferedReader(isr);
String read=br.readLine();
while(read != null) {
sb.append(read);
read =br.readLine();
}
read=sb.toString();
5. ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) != -1) {
baos.write(buffer, 0, length);
}
String s=new String(baos.toByteArray());
System.out.println(s);
Also vielen Dank schon mal
Michi
Ist zwar viel Text, ich wär aber wahnsinnig dankbar, wenn mir einer helfen könnte.
bei dem Quelltext unten seht ihr ja dann, was ich machen will, das Problem ist, ich krieg es seit Tagen nicht hin, diesen blöden InputStream in der Methode load(InputStream is) auszulesen. Es funktioniert zwar, wenn ich es mit einem TypeCast probiere (String s = (String)(ObjectOutputStream)is).read(); ), aber ich soll es halt für InputStreams im Allgemeinen machen. Dabei habe ich schon so gut wie alles probiert, was ich so gefunden habe (oder zickt einfach mein Eclipse rum?):
1. StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();
funktioniert nicht, weil Eclipse bei mir anzeigt, dass es IOUtils nicht finden kann, aber das ist doch in java.lang, oder?
Und bei den folgenden Varianten ist der String s immer leer:
2. Scanner scanner =new Scanner(is);
Scanner s = scanner.useDelimiter("\\A");
String st=s.hasNext() ? s.next():"";
3. byte[] b=new byte[is.available()];
is.read(b);
String s=new String(b);
System.out.println(s);
4. InputStreamReader isr=new InputStreamReader(is);
StringBuilder sb=new StringBuilder();
BufferedReader br=new BufferedReader(isr);
String read=br.readLine();
while(read != null) {
sb.append(read);
read =br.readLine();
}
read=sb.toString();
5. ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) != -1) {
baos.write(buffer, 0, length);
}
String s=new String(baos.toByteArray());
System.out.println(s);
Java:
try {
File f = new File("testlauf.test");
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(sc.toString());
oos.flush();
oos.close();
}
catch (Exception e) {
e.printStackTrace();
}
try {
File f = new File("testlauf.test");
FileInputStream fis=new FileInputStream(f);
ObjectInputStream ois=new ObjectInputStream(fis);
new MarketAnalyserConsole().run(System.in,System.out,ois);
ois.close();
}
catch (Exception e) {
e.printStackTrace();
}
public void run(InputStream in,OutputStream out,InputStream shareData)
{
try{
Collection<Share> coll=new CSVShareImporter().load(shareData);
...}
public class CSVShareImporter implements ShareImporter{
public Collection<Share> load(InputStream is)
{
try
{
//String s=... irgendwie aus is den String rauszaubern
return collectionAuswerten(s);// was genau das ist, ist hier egal
}
catch(Exception e)
{
e.printStackTrace();
}return null;
}
Michi
Zuletzt bearbeitet: