Hallo,
ich versuche ein Programm zu schreiben mit dem ich mir eine ICS Datei mit meinen Schichten fürs Handy erstellen möchte. Was bisher funktioniert ist das einlesen und das schreiben in eine neu Datei aber nur bis genau 64k (65536) Dateigröße! Warum ist das so ?
mache ich was falsch?
oder wie kann ich diese Grenze umgehen?
Danke schon mal!
MfG Fritz
Die Quelldatei sieht etwa so ausund geht komplett über 2 Jahre:
20120101
20120102 s
20120103 s
20120104 n
20120105 n
20120106
20120107
20120108
20120109 f
20120110 f
20120111 s
20120112 s
20120113 n
20120114 n
20120115
20120116
20120117
20120118 f
20120119 f
20120120 s
20120121 s
20120122 n
20120123 n
20120124 n
20120125
20120126
20120127 f
20120128 f
20120129
20120130 s
20120131 s
20120201 n
20120202 n
20120203
20120204
20120205
20120206 f
20120207 f
20120208 s
20120209 s
20120210 n
20120211 n
20120212
20120213
20120214
20120215 f
ich versuche ein Programm zu schreiben mit dem ich mir eine ICS Datei mit meinen Schichten fürs Handy erstellen möchte. Was bisher funktioniert ist das einlesen und das schreiben in eine neu Datei aber nur bis genau 64k (65536) Dateigröße! Warum ist das so ?
mache ich was falsch?
oder wie kann ich diese Grenze umgehen?
Danke schon mal!
MfG Fritz
Java:
package TestPaket;
import java.io.*;
public class SchichtICS {
private static int zeilenZaeler =1,term, zz;
private static int mitTermin, ohneTermin;
static FileReader buff;
static BufferedReader bf;
static FileWriter f1,f2;
static String[] aa=new String[3000];
static String text;
//Datei lesen
public static void lesen(){
try{
buff=new FileReader("d:\\Schichtplan.txt");
bf=new BufferedReader(buff);
}catch(FileNotFoundException e){
System.out.println("Datei wurde nicht gefunden");
}
try{
String z1= bf.readLine();
while((z1=bf.readLine()) != null){
zeilenZaeler +=1;
System.out.println(z1+" "+z1.length());
if (!z1.endsWith("\u0009"))
{
aa[zz]=z1;
zz +=1;
System.out.println("mit TAB"+ohneTermin);
ohneTermin+=1;
}
}
}catch (IOException e){System.out.println("Fehler beim einlesen!");}
}
public static void schreiben(String[] a){
try{
// f1=new FileWriter("d:/testdatei.txt");
// f1.write("zeile1\r\n");
// f1.write("zeile 2\r\n");
// f1.close();
f1=new FileWriter("d:\\Schicht.ics",true);
BufferedWriter bw=new BufferedWriter(f1);
f1.write("BEGIN:VCALENDAR\r\n"+
"PROID:=//FritzUmwandler//EN\r\n"+
"VERSION:1.0\r\n"+
"X-WR-CALNAME:Schicht\r\n");
//f1.close();
for (int x=0;x<zz-1;x++){
if (!aa[x].endsWith("\u0009")){
String datum=aa[x].substring(0,8 );
String schicht=aa[x].substring(9,10);
if (schicht.equals("f"))text="F";else
if (schicht.equals("s")) text="S";else
if (schicht.equals("n")) text="N";
//***Testausgaben***
//System.out.println(text);
//System.out.println(datum);
//System.out.println((aa[x].substring(9,10)));
// try{
bw.write("BEGIN:VEVENT\r\n"+
"SUMARY:"+text+"\r\n"+
"CATEGORIES:Schicht\r\n"+
"CLASS:PRIVATE\r\n"+
"DTSTART;VALUE=DATE:"+datum+"\r\n"+
"DTEND;VALUE=DATE:"+datum+"\r\n"+
"TRANSP=TRANSPARENT\r\n"+
"END:VEVENT\r\n");
// f2.close();
// }catch(IOException e){
// System.out.println("Fehler "+e);
// };
};
// f2.write("BEGIN:VEVENT\r\n"+
// "TERMIN "+x+"\r\n");
// f1.close();
}
f1.write("END:VCALENDAR");
}catch(IOException e){
System.out.println("Fehler beim Dateischreiben!"+e);
}
}
public static void main(String[] args) {
lesen();
schreiben(aa);
term=(zeilenZaeler-ohneTermin); // Anzahl der Kalendereinträge
System.out.println(ohneTermin+" Termine ohne Schicht und "+term+" mit Schicht");
System.out.println("Ende des Programms");
}
}
Die Quelldatei sieht etwa so ausund geht komplett über 2 Jahre:
20120101
20120102 s
20120103 s
20120104 n
20120105 n
20120106
20120107
20120108
20120109 f
20120110 f
20120111 s
20120112 s
20120113 n
20120114 n
20120115
20120116
20120117
20120118 f
20120119 f
20120120 s
20120121 s
20120122 n
20120123 n
20120124 n
20120125
20120126
20120127 f
20120128 f
20120129
20120130 s
20120131 s
20120201 n
20120202 n
20120203
20120204
20120205
20120206 f
20120207 f
20120208 s
20120209 s
20120210 n
20120211 n
20120212
20120213
20120214
20120215 f