webForumDet fria alternativet

Java - läsa från fil

11 svar · 910 visningar · startad av turbonallen

turbonallenMedlem sedan nov. 200116 inlägg
#1

Hej! Jag har ett problem med att läsa in filer i java, koden har fungerat utmärkt innan, när jag kört koden i skolan (linux)

Men nu när jag försöker köra samma kodsnutt hemma (windows) vill det inte riktigt fungera:

import java.io.*;

public class ReadData{
  private static final String TimesFile = "times";
  private static final String StopsFile = "stops";

  /** 
   * Reads from file TimesFile. The file is expected to contain a two dimensional
   *  int array 
   */
  public static int[][] getTimeMatrix(){
    int[][] data = null;
    try{
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(TimesFile));
      data = (int[][]) in.readObject();
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return data; 
  }

  /**
  * Reads from file StopsFile. The file is expected to contain a String arrray
  */ 
  public static String[] getStops(){
    String[] data = null;
    try{
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(StopsFile));
      data = (String[]) in.readObject();
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return data;
  }

}

Självklart ligger filerna "times" och "stops" i samma mapp som .java - filen.

Någon som kan se vad som är fel?
Tack på förhand! :)

Mc FettoMedlem sedan nov. 20022 355 inlägg
#2

Felmeddelande? Rätt namn på filerna?

turbonallenMedlem sedan nov. 200116 inlägg
#3

ahh, felmeddelande kan vara bra att ha ja :)

java.io.FileNotFoundException: times (The system cannot find the file specified)

java.io.FileNotFoundException: stops (The system cannot find the file specified)

Och ja, självklart heter filerna just "times" och "stops" (utan citat-tecken)

Och dessa filer ligger i samma mapp som resten av filerna, jag har helt enkelt kopierat mappen med javafilerna från linuxburken i skolan till min egen burk.

andreascarlssonMedlem sedan feb. 2003202 inlägg
#4

Re: Java - läsa från fil

turbonallen skrev:

Självklart ligger filerna "times" och "stops" i samma mapp som .java - filen.

Jag hoppas att du menar att de ligger i samma mapp som classfilen? :)

Jag testade här hemma (också på windows) och din kod fungerade fint... (med filerna i samma mapp som class-filen)

turbonallenMedlem sedan nov. 200116 inlägg
#5

jo .class-filerna lägger sig i samma mapp som java-filerna som standard

Ingen som har nån idé på vad som kan vara fel?

Tycker det är konstigt att inte jag lyckas kompilera

andreascarlssonMedlem sedan feb. 2003202 inlägg
#6

Lyckas du inte kompilera heller? Då är det förmodligen classpathen som behöver sättas... :)

turbonallenMedlem sedan nov. 200116 inlägg
#7

Tack för all hjälp hittils

jag testade att sätta classpathen till samma som där .java-filerna ligger, men det hjälpte inte så mycket

Jag testade även att hårdkoda sökvägarna i mitt program, till dit filerna ligger, men det hjälpte inte det heller.

Och så testade jag att döpa om filerna till något med en filändelse, istället för bara "times" och "stops", men det gjorde ingen skillnad det heller.

Jag kan inte förstå att programmet har så svårt att hitta filerna, hur mycket ska man behöva beskriva för programmet innan det fattar? :)

Det är förövrigt NetBeans IDE 3.6 som det heter, det kom med när jag tankade hem java-grejset från sun's hemsida.

andreascarlssonMedlem sedan feb. 2003202 inlägg
#8

Hmmm...

Lyckades du kompilera java-filerna då?

turbonallenMedlem sedan nov. 200116 inlägg
#9

nej, jag lyckas inte kompilera java-filerna

edit: jag testade att kompilera på skolans datorer och flytta över de kompilerade filerna till min dator. Det går utmärkt att köra class-filerna, men inte att kompilera java-filerna.

börjar bli sur på netbeans

andreascarlssonMedlem sedan feb. 2003202 inlägg
#10

Då är inte classpathen rätt satt! För att du skall få programmet att lira, måste den peka rätt.

Jag tror att du måste kompilera om filerna, eftersom filsystemet ser anorlunda ut på Linux. Det kanske eventuellt läggs till en filseparator före filerna (i programmet) när du kompilerar java-filen. På Linux är denna "/", medans den är "\" på win.

Jag tror att du kommer att få allt att fungera, bara classpathen är rätt...

Mc FettoMedlem sedan nov. 20022 355 inlägg
#11

Jo, det lär vara Classpath:en
Jag testade koden och fick den att hitta en dummyfil

jonnyzMedlem sedan okt. 2004502 inlägg
#12

Om du har laddat ner Suns JDK bör du kunna sätta vanliga PATH för systemet till mappen där du har javac.exe.

Se till att du har med "." i classpath.

Prova sedan att starta en dosprompt/kommadoradsfönster och gå till rätt katalog. Prova sedan

javac ReadData.java

och rapportera eventuella felmeddelanden.

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)