Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java ja tiedoston avaaminen

VexiN [21.06.2008 17:06:15]

#

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

_Pete_ [25.06.2008 14:39:46]

#

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

VexiN [27.06.2008 15:47:15]

#

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!

_Pete_ [28.06.2008 12:38:53]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta