El Viking Skrevet 13. februar 2007 Del Skrevet 13. februar 2007 Jeg har noen filer jeg vil lese, og legge inn i et array (for utskrift til JPG). Takket være hjelp herfra greier jeg å lese gjennom mappe-strukturen og komme frem til riktige filer. Men jeg greier ikke å sende dataene tilbake til den metoden som skal skrive alt sammen til JPG. Det ser sånn ut: mappe1/snitt.csv mappe2/snitt.csv mappe3/snitt.csv .... Målet er å lese inn fildataene og mappenavnene sammen. Jeg vil ta med begge verdiene over i metoden som skal skrive til JPG. Hadde tenkt å løse dette med en 2-dimensjonal double array og en String-array. Slik at det hadde blitt; array[0][] og String[0] hører sammen array[1][] og String[1] hører sammen .... Jeg har tenkt som følger: public traverser(dir) { leser mapper hvis fil == "snitt.csv" lesFilTilArray(fil); //det ligger også forskjellige filer innimellom } public lesFilTilArray(File fil) { while (nextLine != null) { Array[x][i] = leser inn alle csv-elementer;//x er fil nr x av total y, derfor må man holde styring på hvor mange man har lest } Husk også hvilken mappe man er i. Denne skal bli til String[x] } public skrivTilJpg { serie1 = String sistedelav(mappe1) + Array[0][]; serie2 = String sistedelav(mappe2) + Array[1][]; etc... skriver til JPG; } Det er mulig jeg gjør det tungvint her, men. Kanskje det hadde vært bedre å lese inn alt inne i skrivTilJpg, men jeg tenkte å lese gjennom disken bare én gang. Det er derfor jeg vil løse det med å lese inn alt til en array med en gang. Jeg har prøv litt med 'return', men en metode vil bare returnere én type av gangen. Ikke får jeg lagd noen globale arrays heller. Mulig denne er ganske enkel, men... Jeg er ganske fersk på java. Vi har ikke kommet dit hvor dette er omtalt ennå. Lenke til kommentar
___ Skrevet 14. februar 2007 Del Skrevet 14. februar 2007 Det er bare å opprette en klasse som inneholder både katalognavn og array. Hilsen Werner Lenke til kommentar
El Viking Skrevet 14. februar 2007 Forfatter Del Skrevet 14. februar 2007 Akkurat. Og hvordan kunne denne klassen f.eks. sett ut? Hva burde ha vært i main()? Og hva burde ha vært i klassemetoder? Og hvor skulle man plassere min int-array og string-array? Lenke til kommentar
DJViking Skrevet 16. februar 2007 Del Skrevet 16. februar 2007 Akkurat. Og hvordan kunne denne klassen f.eks. sett ut? Hva burde ha vært i main()? Og hva burde ha vært i klassemetoder? Og hvor skulle man plassere min int-array og string-array? 7940635[/snapback] public class MinKlasse{ //Klassevariabler som er tilgjengelige for alle metoder etableres her public static void main(String[] args){ Denne metoden er hovedmetoden som kjøres når du kjører programmet og må kalle dine andre metoder for å utføre hensikten med programmet } //Dine metoder... } Lenke til kommentar
qualbeen Skrevet 16. februar 2007 Del Skrevet 16. februar 2007 som du selv sier: return kan kun returnere én type. En dårlig løsning er å returnere en Objekt[]-tabell, men det er alså en dårlig løsning. Hva hvis metoden returnerte ett MinReturnKlasse-objekt? Nå har jeg ikke helt forsått nøyaktige hvilke verdier du vil returnere, men om du hadde en klasse som ca slik ut: Klikk for å se/fjerne innholdet nedenfor public class MinReturnKlasse{ //private variabler, de data du øsnket å returnere private String mappenavn; private String[] filer; /* konstruktør */ public MinReturnKlasse(String mappe, String[]alleFiler){ mappenavn=mappe; filer=alleFiler; } //ulike metoder kommer her: /* returnerer mappenavnet */ public getMappenavn(){ return mappenavn; } /* returner fil-array */ public getFiler(){ return filer; } } (Ingen main-metode her, dette er bare en hjelpeklasse du bruker i programmet ditt. Mainmetoden bruker du til å starte selve programmet, altså ikke i denne klassen.) Siden du har mange mapper (mange slike objekter som er i code-blokken over) kan du opprette en tabell av typen MinReturnKlasse[]. (Det kan være en ide å endre klassenavnet til noe bedre, f.eks. Mappe/Folder eller noe slikt.) På den måten vil folder[0] inneholde all data fra mappe nr 1. folder[1] er neste mappe osv... Det betyr at når du traverserer filstrukturen og leser inn filene, så skriver du noe slikt: String mappenavn //mappenavnet her String[] allefiler = <alle filer i mappen> // du må også lage metoder for å finne alle filer folder = new MinReturnKlass(mappenavn, allefiler); i henviser til neste ledige plassering i folder-tabellen. Når du er ferdig med å gå gjennom alle mapper, og har en fin folder-tabell, er det enkelt å printe ut data: Klikk for å se/fjerne innholdet nedenfor for (int i=0; i<folder.length; i++){ String mappe = folder[i].getMappenavn(); //får tak i mappenavnet String[] filer = folder[i].getFiler(); // henter ut fil-arrayet for den mappen for (int j=0; j<filer.length; j++){ System.out.println("Fil nr "+(j+1)+": "+filer[j]); //gir utskrift slik "Fil nr 3: Kreta06.jpg" } } Tør forresten vedde på at det er masse skrivefeil og slikt her. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå