Avatar billede ascii Nybegynder
20. februar 2002 - 11:31 Der er 38 kommentarer og
1 løsning

Læse en fil på brugers PC via Applet

Er der nogen der ved hvilken metode man skal bruge hvis man vil læse en fil på brugers pc. Det skal foregå på den måde at når bruger henter Applet fra webserver, så skal Appletten læse en fil fra brugers PC, og sammenligne den med en fra en oprettet database. Lidt ligesom det foregår i Homebanking
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 14:29 #1
Det kan du ikke generelt, med mindre brugeren
har givet din Applet specielt lov til det. Det samme
gælder skrivning til fil.
Avatar billede ascii Nybegynder
20. februar 2002 - 14:39 #2
Det vil brugeren give adgang til, da han ellers ike kan logge på Intranet. Det er til et studieprojekt. Men hvordan gør man. Hvilke metoder skal der anvendes
Avatar billede niwikr Nybegynder
20. februar 2002 - 15:57 #3
jeg lytter med :)
Avatar billede niwikr Nybegynder
20. februar 2002 - 15:59 #4
kan du ikke hente filen på 'traditionel vis', inden du loader appletten.
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 16:03 #5
At læse filen (når der er givet tilladelse) er nemt:
String home = System.getProperty("user.home");
String separator = System.getProperty("file.separator");
File file = new File(home+separator+"userfile");
int length = (int)file.length();
byte[] data = new byte[length];
FileInputStream fis = new FileInputStream( file );
fis.read( data, 0, length );
Du skal så sammenligne data med det tilsvarende
læst fra din database. Hvordan der læses fra den
kan jeg af gode grunde ikke vide.
Avatar billede ascii Nybegynder
20. februar 2002 - 16:03 #6
Det er en form for nøgle der skal være der. Appletten skal sammenligne den med en nøgle i min database og hvis de er ens skal brugeren kunne indtaste brugernavn og password...
Avatar billede ascii Nybegynder
20. februar 2002 - 16:08 #7
Hvor skal diret til filen være
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 16:13 #8
Mener du direktoriet? I så fald tilføj noget til
argumentet efter separator og husk at tilføje
ekstra separatorer så det kører både under
Unix og Windows.
File file = new File(home+s+"subdir1"+s+"subdir2+s+"filename");;
Avatar billede ascii Nybegynder
20. februar 2002 - 16:19 #9
eks: File file = new File(home+s+"C:\""kode.txt");

Vil den så læse filen kode.txt og ligge den i fis
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 16:22 #10
Pas på, den finder automatisk brugerens hjemme-
direktorie med System.getProperty("user.home") og
hvilken karakter der bruges til at separere direktorierne:
\ under Windows og / under Unix. Hvis du bruger
det, så ja.
Avatar billede ascii Nybegynder
20. februar 2002 - 16:29 #11
Hvad mener du med home+s
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 16:36 #12
home er sat med et System.getProperty kald og
s er kort for separator som er sat på samme vis.
Avatar billede ascii Nybegynder
20. februar 2002 - 16:39 #13
Jeg prøver at lave en test senere....
Der kommer nok nogle spørgsmål, så håber du vil hjælpe hvis det går helt galt
Ascii
Avatar billede ascii Nybegynder
20. februar 2002 - 17:45 #14
har følgende, men det virker ikke.
package laesefil;
import java.*;
import java.io.*;
import cs1.*;
public class laesefil {


// int length = (int)file.length();

  String home = System.getProperty("user.home");
  String separator = System.getProperty("file.separator");
  File file = new File(home+separator+"kode.txt");
  int length = (int)file.length();
  byte[] data = new byte[length];

  public laesefil()
  {

  }
  public void main(String args[])
      {
        try
        {
        FileInputStream fis = new FileInputStream( file );
        fis.read( data, 0, length );
        System.out.println("Try");
        Keyboard.readChar();
        }
        catch( IOException e )
            {
              if( e.getMessage()!=null )
              System.out.println("Catch");
              Keyboard.readChar();
            {
      }
    }
    }
Kan du se nogle fejl
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 18:02 #15
Hvad er cs1? Har du brug for at lægge det
i en package? Bortset fra det fortæller
du ikke hvad der går galt. Lad os lige
få det først.
Avatar billede ascii Nybegynder
20. februar 2002 - 18:03 #16
cs1 er en funktion der gør det muligt at se resultat i prompt indtil du trykker på en tast.
Avatar billede ascii Nybegynder
20. februar 2002 - 18:05 #17
Der mangler en klamme et eller andet sted.... Kan ikke finde hvor det er
Avatar billede ascii Nybegynder
20. februar 2002 - 18:08 #18
Se bort fra de to sidste klammer, og den brokker sig stadigvæk
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 18:09 #19
efter den anden Keyboard.readChar()
er der en der peger den forkerte vej.
Avatar billede ascii Nybegynder
20. februar 2002 - 18:11 #20
nu compilere den, så skal jeg bare ha skrevet resultatet ud
Avatar billede ascii Nybegynder
20. februar 2002 - 18:13 #21
Hvor skal  FileInputStream fis = new FileInputStream( file );
ind
Avatar billede ascii Nybegynder
20. februar 2002 - 18:14 #22
Er der sorry
Avatar billede ascii Nybegynder
20. februar 2002 - 18:15 #23
Nu ser den sådan ud::
package laesefil;
import java.*;
import java.io.*;
import cs1.*;
public class laesefil
{


// int length = (int)file.length();

  String home = System.getProperty("user.home");
  String separator = System.getProperty("file.separator");
  File file = new File(home+separator+"kode.txt");
  int length = (int)file.length();
  byte[] data = new byte[length];

  public laesefil()
  {

  }
  public void main(String args[])
      {
        try
        {
        FileInputStream fis = new FileInputStream( file );
        fis.read( data, 0, length );
        System.out.println("Try");
        Keyboard.readChar();
        }
        catch( IOException e )
            {
              if( e.getMessage()!=null )
              System.out.println("Catch");
              Keyboard.readChar();
            }
  System.out.println("koden er"+ file);
  Keyboard.readChar();

}
Avatar billede ascii Nybegynder
20. februar 2002 - 19:50 #24
Den laver en excption, men kan ikke få den at se da prompt forsvinder igen..
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 20:17 #25
Følgende lettere reducerede program
kører fint og kaster ingen exceptions.
Du skal naturligvis huske at oprette
filen kode.txt i hjemmedirektoriet.
import java.io.*;
public class laesfil {

    public static void main( String[] args ) {
        try {
            String home = System.getProperty("user.home");
            String separator = System.getProperty("file.separator");
            File file = new File(home+separator+"kode.txt");
            int length = (int)file.length();
            byte[] data = new byte[length];
            FileInputStream fis = new FileInputStream( file );
            fis.read( data, 0, length );
            System.out.println("length="+length);
        } // try
        catch( IOException e ) {
            if( e.getMessage()!=null )
                System.out.println("e="+e);
        } // catch
    } // main
} // laesfil
Avatar billede ascii Nybegynder
20. februar 2002 - 20:28 #26
Den har fundet filen, men skriver at adgang er nægtet. Hvad gør man ved det..
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 20:30 #27
Hvad præcis skriver den ud? Kører du
bare programmet i en shell og ikke andet?
Avatar billede ascii Nybegynder
20. februar 2002 - 20:33 #28
jaca.io.FileNotFoundExcption: C:\Documents and settings\jesper\kode.txt(Adgang nægtet)
Avatar billede ascii Nybegynder
20. februar 2002 - 20:33 #29
Kører den fra JBuilder.
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 20:39 #30
læg filen lokalt i samme direktorie du
kører programmet i og modificer
= new File(...) til blot at have
"kode.txt".
Avatar billede ascii Nybegynder
20. februar 2002 - 20:44 #31
har lagt den i direktorie hvor JBuilder har source og output, men den kan ikke finde filen.
Avatar billede ascii Nybegynder
20. februar 2002 - 20:46 #32
Hvordan kan det være at man ikke kan gøre sådan at man kan læse filen når den ligger i home ??
Avatar billede carstenknudsen Nybegynder
20. februar 2002 - 21:03 #33
Det er det evindelige problem med store
udviklingsværktøjer, man ved ikke hvordan
de egentlig virker. Programmet kører fint
hos mig under Linux. Hvad med at prøve at
køre det i en dos shell eller hvad du nu
har på kommandolinien, så kan du se alt
hvad der kommer ud.
PS Den kører ikke som en applet vel?
Avatar billede ascii Nybegynder
20. februar 2002 - 21:05 #34
Den kører ikke som Applet.
Mener du at jeg skal kører den for dos??
Avatar billede ascii Nybegynder
20. februar 2002 - 21:17 #35
Så er det javac jeg skal bruge, men det kan jeg ikke huske hvordan man gør ;-((. Eksempelvis med homebanking, der kan de gøre det men det er jo også en .usf fil de bruger. Hvad det lige står for det ved jeg ikke...
Men det skal sq kunne ladse sig gøre..
Avatar billede carstenknudsen Nybegynder
21. februar 2002 - 09:50 #36
Ja, naturligvis, her kører det nemt. Problemet er
at JBuilder og lign. muligvis manipulerer med
forskellige direktorier og hvis ikke man er helt
med på det kan visse ting virke underlige. Prøv
at compilere fra kommandolinien. Du gør som
følger:
javac laesfil.java
java -cp . laesfil
så skulle du have klaret både compilering og
eksekvering. Prøv iøvrigt at tilføje udskrift at
System.getProperty("user.home") for at finde
ud af hvad systemet mener er hjemmedirektoriet
for brugere, formentlig er det "C:\" men måske
er det noget andet. Hvis det er et borland direktorie
så smut forbi java.sun.com og download J2SDK1.4.0
det findes der til Windows, Linux og Solaris. Så
kan du køre med det istedet. Det er ikke en god ide
(synes jeg) at benytte klasser som cs1 fordi de ikke
er en del af standarddistributionen. Husk på at dine
Applets skal køre på klientsiden.
Avatar billede ascii Nybegynder
21. februar 2002 - 20:42 #37
Det prøver jeg lige.. Har været på arbejde hele dagen
Avatar billede ascii Nybegynder
21. februar 2002 - 22:08 #38
User.home er C:\Documents and settings\jesper\
Hvis jeg kører den fra kommandolinie skriver den det samme::
java.io.FileNotFoundExcption: C:\Documents and settings\jesper\kode.txt(Adgang nægtet)
Så ? er hvad man så kan prøve.. Selvom jeg laver filen ikke-skrivebeskyttet, så ændre det ikke noget, da den med det samme laver den skrivebeskyttet igen...
Avatar billede ascii Nybegynder
21. februar 2002 - 22:09 #39
Med hensyn til cs1, så er det kun en hjælp til at se hvad den skriver i prompt når jeg kompilere. Fjerner den altid når et program kører optimalt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester