Allaolevassa ohjelmassa jossa kopioin tiedoston toiseen ja sitten takaisin (tyhmää, mutta yksinkertaistettua) tulee aina herja "Käyttö estetty" kun yritän avata aiemman inputin outputtina. En kerta kaikkiaan pääse eteenpäin tuosta ongelmasta. Kiitti avusta.
import java.util.Scanner; import java.util.Formatter; import java.io.IOException; import java.io.FileNotFoundException; import java.io.File; public class InOut { Scanner inp = null; Formatter outp = null; File inTied = new File("index.htm"); File inOt = new File("inOt.txt"); public static void main(String[] args) { InOut io = new InOut(); io.run(); } private void run() { openInput(inTied, inp); openOutput(inOt, outp); kopioi(inp, outp); inp.close(); outp.close(); // *********************************** openInput(inOt, inp); openOutput(inTied, outp); kopioi(inp, outp); inp.close(); outp.close(); } private void kopioi(Scanner inpti, Formatter outpti) { String line; int count = 0; while (inpti.hasNext()) { count++; line = inpti.nextLine(); outpti.format("%s\n", line); } System.out.println("Kopioitu " + count + " tietuetta"); } private void openInput(File inFile, Scanner inpti) { try { inpti = new Scanner(inFile); // ../src/InOut.java } catch (FileNotFoundException ex) { System.err.println("Error1=" + ex); System.exit(1); } System.out.println("Avattu input " + inFile.getAbsolutePath()); inp = inpti; } private void openOutput(File f, Formatter fm) { try { f.createNewFile(); } catch (IOException ex) { System.err.println("Error2=" + ex); System.exit(2); } try { fm = new Formatter(f); } catch (FileNotFoundException filesNotFoundException) { System.err.println("Error3= " + filesNotFoundException); System.exit(3); } System.out.println("Avattu output " + f.getAbsolutePath()); outp = fm; } }
Mod. lisäsi kooditagit
Itellä ainakin toimii ihan ok:
petria@quadcore:~/code$ javac InOut.java petria@quadcore:~/code$ cp ../public_html/index.html index.htm petria@quadcore:~/code$ java InOut Avattu input /home/petria/code/index.htm Avattu output /home/petria/code/inOt.txt Kopioitu 27 tietuetta Avattu input /home/petria/code/inOt.txt Avattu output /home/petria/code/index.htm Kopioitu 27 tietuetta
Uutisryhmmissä sain myös vastauksen, että Ubuntussa toimii moitteetta ja että vika olisi Vistassa. Nyt en enää tiedä, mitä voisin tehdä, muuta kuin luopua ajatuksesta, että voin editoida samaa tiedostoa eli pitää kopioida uusi output.
No kiitti kuitenkin!
Nyt toimii ja oli turha syyttää Vistaa sillä outputtina käyttämäni tiedosto index.htm oli todellakin vain luku tyyppiä, koska se oli Dreamweaverin file check in/out toiminnan vuoksi sellainen eli olisi ensin pitänyt tehdä Dreamweaverilla check in ja vasta sitten ajaa tuo testiohjelma!
Veikkaan että se Wintoosa vika johtuu siitä, että File objecteja käytetään moneen kertaan, sulkemisen jälkeen ? Ei voi kokeila koska toosaa ei ole eikä tule.
Aihe on jo aika vanha, joten et voi enää vastata siihen.