Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



JAVA zapis do soubrou

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: JAVA zapis do soubrou

Autor: Maaartin

12:53:35 04.11.2011

> [ital]Jestli si myslíš, že výsledkem bude IllegalArgumentException neměl bys přemýšlet a přijmout a používat a hlavně radit následující konstrukci:[/ital]

Hmmm, no nevim. Ten test na null je zbytecny. Tak jak to ma je to dobre, out nemuze byt null, protoze se inicializuje uz pred try-catch a dale se neprirazuje. Sice neni oznaceny jako final, ale to predpokladam ze je dano tim ze je to postnuty tady... ja bych tam final taky nepsal, kdyz me ho doplni eclipse.

Prepsani vyjimky muze problem, tvoje oskliva konstrukce je lepsi.

> [ital]Jestli ti je proti srsti 6 řádek navíc, můžeš použít IOUtils a její closeQuietly: http://commons.apache.org/io/apidocs/org/apache/commons/io/IOUtils.html#closeQuietly%28java.io.Closeable%29 .[/ital]

Nebo
com.google.common.io.Closeables.closeQuietly(Closeable)
nebo jeste lepe
close(@Nullable Closeable closeable, boolean swallowIOException)
Jaxe pouziva najdes ve zdrojacich Guavy.

> [ital]A nebo ještě lépe, použít Javu 7 a využít AutoCloseable:[/ital]

Nebo pouzit
http://projectlombok.org/features/Cleanup.html
ale neni to idealni.

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: marekStu

12:36:09 04.11.2011

Ja jen opravim kod nebot jsem si to zkousel a byly tam spatne readry

[code]
A nebo ještě lépe, použít Javu 7 a využít AutoCloseable:

try (BufferedReader out = new BufferedReader(new FileReader(vystup))) {
out.write("text");
out.write(";");
out.newLine();
}

Za

try (BufferedWriter out = new BufferedWriter(new FileWriter(vystup))) {
out.write("text");
out.write(";");
out.newLine();
}

[/code]

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: Jan33

11:15:27 04.11.2011

Abych se vrátil k původnímu dotazu. Velmi ti doporučuji nehrát si s výstupem sám, ale využít StringEscapeUtils a konkrétně metody [bold]escapeCsv(String)[/bold] / [bold]unescapeCsv(String)[/bold]. Viz: [url]http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringEscapeUtils.html#escapeCsv%28java.io.Writer,%20java.lang.String%29[/url].

Ono je totiž relativně těžké správně ošetřit všechny možné kolize s oddělovačem, který používáš.

Abych to vysvětlil, pokud použiješ kód, který ti doporučuje Alpedar a uživatel vloží do jednoho pole větu "to máme hezky; svítí sluníčko", dostaneš se do svízelné situace, kdy ti přibude jeden sloupec.

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: Jan33

11:08:35 04.11.2011

Tohle je klasický případ špatného využití finally sekce.

Vyzkoušej následující kód:

try {
...
out.newLine();
out = null;
throw new IllegalArgumentException("Tohle nedostaneš!"); //$NON-NLS-1$
} finally {
out.close();
}

Jestli si myslíš, že výsledkem bude IllegalArgumentException neměl bys přemýšlet a přijmout a používat a hlavně radit následující konstrukci:

try {
...
} finally {

if (out != null) {
try {
out.close();
} catch (IOException ex) {
// Ignore it if you really not need
}
}
}

Ta ošklivá konstrukce zaručí to, že se nepřepíše možná výjimka při vykonávání výkonného kódu výjimkou IOException při uzavírání streamu, která tě většinou nezajímá, na rozdíl od té, kterou jsi si přepsal.

Jestli ti je proti srsti 6 řádek navíc, můžeš použít IOUtils a její [bold]closeQuietly[/bold]: [url]http://commons.apache.org/io/apidocs/org/apache/commons/io/IOUtils.html#closeQuietly%28java.io.Closeable%29[/url] .

A nebo ještě lépe, použít Javu 7 a využít AutoCloseable:

try (BufferedReader out = new BufferedReader(new FileReader(vystup))) {
out.write("text");
out.write(";");
out.newLine();
}

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: Alpedar

17:12:42 02.11.2011

Ale maji se zavirat streamy.
Takze
FileWriter fr = new FileWriter(vystup, true);
BufferedWriter out = new BufferedWriter(fr);
try {
out.write("text");
out.write(";");
out.newLine();
} finaly {
out.close();
}

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: Maaartin

16:33:42 02.11.2011

> [ital]tak použij třeba toto, je zde potřeba ošetřit vyjímkz[/ital]

Neni... navic stejne by ju spolknul. :D Vyjimky se maji v 99% pripadu deklarovat, odchytavat pak tam kde se s tim da neco rozumnyho udelat.

Citovat příspěvek

 

Re: JAVA zapis do soubrou

Autor: fichtik

14:22:33 02.11.2011

tak použij třeba toto, je zde potřeba ošetřit vyjímkz
[code]
FileWriter fr = new FileWriter(vystup, true);
BufferedWriter out = new BufferedWriter(fr);
out.write("text");
out.write(";");
out.newLine();
out.close();
[/code]
na čtení buď použij FileReader->BufferedReader, a nebo si ty hodnoty ulož do promměných
;)

Citovat příspěvek

 

JAVA zapis do soubrou

Autor: oraf

13:48:25 02.11.2011

ahoj resim problem potrebuju ukladat do souboru treba data.txt z javy , uzivatel zada par hodnot a potreuju aby s emi ulozili do TXT oddelene strednikem aby se dale mohli nacist v jinem kroku programu
diky

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: