Scrivere su un file

di il
2 risposte

Scrivere su un file

Salve,
il programma che sto scrivendo mi chiede di scrivere, a partire da due file F1 ed F2 che contengono degli interi, un terzo file in cui ogni intero è la giustapposizione dei valori di due interi corrispondenti in F1 ed F2.
Ad esempio se F1 contiene: [34,78,65] ed F2 contiene:[78,55,12] , allora F3 sarà:[3478,7855,6512]
Io ho gia letto e scritto i primi due file in questo modo:
public class InteriGiustapposti {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
// scrivo e leggo il primo file
System.out.println("Nome primo file da creare:");
String = sc.nextLine();
DataOutputStream dos1 = new DataOutputStream(new FileOutputStream(f1));
System.out.println("Fornisci una serie di interi per il file :");
for (;;) {
System.out.print("int>");
String input1 = sc.nextLine();
if (input1.length() == 0)
break;
dos1.writeInt(Integer.parseInt(input1));
}
dos1.close();
DataInputStream dis1 = new DataInputStream(new FileInputStream(f1));
System.out.println();
System.out.println("Contenuto del file ");
int x1 = 0;
for (;;) {
try {
x1 = dis1.readInt();
} catch (EOFException e) {
break;
}
System.out.println(x1);
}
dis1.close();

System.out.println();
// scrivo e leggo il secondo file
System.out.println("Nome secondo file da creare:");
String f2 = sc.nextLine();
DataOutputStream dos2 = new DataOutputStream(new FileOutputStream(f2));
System.out.println("Fornisci una serie di interi per il file f2");
for (;;) {
System.out.print("int>");
String input2 = sc.nextLine();
System.out.println();
if (input2.length() == 0)
break;
dos2.writeInt(Integer.parseInt(input2));
}
dos2.close();
DataInputStream dis2 = new DataInputStream(new FileInputStream(f2));
System.out.println();
System.out.println("Contenuto del file f2");
int x2 = 0;
for (;;) {
try {
x2 = dis2.readInt();
} catch (EOFException e) {
break;
}
System.out.println(x2);
}
dis2.close();
Mi sapreste dare qualche consiglio su come fare il terzo file F3?
Grazie

2 Risposte

  • Re: Scrivere su un file

    Ciao, conosci gli array ? se memorizzi tutti i numeri in 2 array poi li puoi combinare e scrivere il terzo file i cui elementi, nel caso di numeri a 2 cifre, saranno calcolati così: array1[0] * 100 + array2[0]
  • Re: Scrivere su un file

    Oppure
    package interigiustapposti;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    
    public class InteriGiustapposti {
    public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    // scrivo e leggo il primo file
    System.out.println("Nome primo file da creare:");
    String f1 = sc.nextLine();
    DataOutputStream dos1 = new DataOutputStream(new FileOutputStream(f1));
    System.out.println("Fornisci una serie di interi per il file f1:");
    for (;;) {
        System.out.print("int>");
        String input1 = sc.nextLine();
        if (input1.length() == 0)
            break;
        dos1.writeInt(Integer.parseInt(input1));
    //        dos1.writeUTF(input1);
    }
    dos1.close();
    /// lettura
    
    System.out.println();
    // scrivo e leggo il secondo file
    System.out.println("Nome secondo file da creare:");
    String f2 = sc.nextLine();
    DataOutputStream dos2 = new DataOutputStream(new FileOutputStream(f2));
    System.out.println("Fornisci una serie di interi per il file f2");
    for (;;) { //infinite loop
        System.out.print("int>");
        String input2 = sc.nextLine();
        System.out.println();
        if (input2.length() == 0)
            break;
        dos2.writeInt(Integer.parseInt(input2));
    }
    dos2.close();
    System.out.println();
    // lettura file
    DataInputStream dis1 = new DataInputStream(new FileInputStream(f1));
    DataInputStream dis2 = new DataInputStream(new FileInputStream(f2));
    DataOutputStream dos3 = new DataOutputStream(new FileOutputStream("risultato"));
    System.out.println("Contenuto dei file 1 e 2");
    int x1 = 0;
    int x2 = 0;
    int x3 = 0;
    for (;;) {
        try {
            x1 = dis1.readInt();
            x2 = dis2.readInt();
            x3 = x1*100 + x2;
            dos3.writeInt(x3);
            
        } catch (EOFException e) {
            break;
        }
        System.out.println(x1 + " + " + x2 + " = " + x3);
    }
    dis1.close();
    dis2.close();
    dos3.close();
    
    System.out.println("Contenuto del file risultato");
    DataInputStream dis3 = new DataInputStream(new FileInputStream("risultato"));
    for (;;) {
        try {
            x3 = dis3.readInt();
        } catch (EOFException e) {
            break;
        }
        System.out.println(x3);
    }
    dis3.close();
        
    }
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte