Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

υπαρχει καποιος τροπος ωστε στην ιδια κλαση με τον ελεγχο (if) να κανει write του αριθμους ειτε στο αρχειο bytes ειτε στο αρχειο interger apo το αρχειο class.dat που εχω δημιουργησει??

 

ευχαριστω ;)

 

εκφωνηση : 

 

Δημιουργήστε ένα πρόγραμμα το οποίο διαβάζει ακεραίους από το αρχείο class.dat και τους διανέμει (γράφει) σε δύο αρχεία. Οι αριθμοί που είναι από μηδέν (0) μέχρι δικόσια-πενήντα-πέντε (255) αποθηκεύονται ως bytes (το λιγότερο σημαντικό τους byte) στο αρχείο C:\bytes.dat. Οι υπόλοιποι αριθμοί αποθηκεύονται ως ακέραιοι αριθμοί στο αρχείο C:\int.dat.

 

 //το class.dat ειναι το αρχειο το εχω δημιουργησει

 

package writebytes;
 
import java.io.*;
 
public class WriteBytes {
 
    public static void main(String[] args) {
        int[] data = { 271, 73, 70, 56, 57, 97, 15, 0, 15, 0,
              128, 0, 0, 255, 255, 255, 0, 0, 0, 44, 0, 0, 0,
              0, 15, 0, 15, 0, 0, 2, 34, 132, 127, 161, 200,
              185, 205, 84, 128, 241, 81, 35, 175, 155, 26,
              228, 254, 104, 55, 102, 121, 165, 201, 145, 169,
              154, 142, 172, 116, 162, 240, 90, 197, 5, 0, 259};
        try {
            FileOutputStream file = new
                FileOutputStream("c:\\class.dat");
            for (int i = 0; i < data.length; i++)
                file.write(data);
            file.close();
        } catch(IOException e) {
            System.out.println("Error " + e.toString());
        }
    }
}
Δημοσ.
FileOutputStream fileBytes=new FileOutputStream("bytes.dat");
FileOutputStream fileInts=new FileOutputStream("ints.dat");

if(n<256)
  fileBytes.write((byte)n);
else
  fileInts.write(n.toString().getBytes());

Για διαβασμα του class.dat θες την FileInputStream

  • Like 1
Δημοσ.

μου εβγαλε ενα error package test;

 
import java.io.*;
 
public class Test {
 
   public static void main(String[] args) {
       try {
           FileInputStream file = new
               FileInputStream("c:\\class.dat");
           boolean eof = false;
           int count = 0;
           while (!eof) {
               int input = file.read();
               System.out.print(input + " ");
               if (input == -1)
                   eof = true;
               else
                   count++;
               FileOutputStream fileBytes=new FileOutputStream("bytes.dat");
               FileOutputStream fileInts=new FileOutputStream("ints.dat");
 
               if(input<256)
                 fileBytes.write((byte)input);
               else
                 fileInts.write(input.toString().getBytes());
           }
           file.close();
           System.out.println("\nBytes read: " + count);
       } catch(IOException e) {
           System.out.println("Error " + e.toString());
       }        
   }
}
// μου εβγαλε cannot invoke tstring
Δημοσ.

Στη δομη επιλογης:

 

 if(input<256)
       fileBytes.write((byte)input);
else
       fileInts.write(input.toString().getBytes());
 
Δεν μπορεις να καλεσεις την μεθοδο toString απο ενα πρωτογονο int. Θα χρειαστει να αντικαταστησεις την μετατροπη
με μια απο τις δυο επιλογες: Integer.toString(input).getBytes() ή String.valueOf(input).getBytes().
  • Like 1
Δημοσ.

Παρατηρω στον υπαρχων κωδικα οτι ανοιγεις τα δυο FileOutputStreams εντος του while-loop οποτε με καθε επαναληψη το περιεχομενο του σωστου αρχειου διαγραφεται και στην θεση του αποθηκευεται το καθε νεο byte που διαβαζεις. Αυτο ειναι το επιθυμητο αποτελεσμα? Αν οχι, ανοιξε τα FileOutputStreams πριν το loop, κανε οτι διαδικασια χρειαζεται και κλειστα μαζι με το file αφου τελειωσει το loop.

 

(EDIT) Αν θελεις οπωσδηποτε να τα ανοιγεις εντος loop και να μην διαγραφονται τα προηγουμενα δεδομενα περασε σαν δευτερη παραμετρο στον constructor των FileOutputStream ενα true για appending αντι για overwriting

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...