1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Παίζει μουσική] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Είμαι Rob, και ας ελπίσουμε ότι η λύση αυτή σας βοηθά να βάλετε 5 00:00:17,550 --> 00:00:19,600 στο δρόμο προς την ανάκαμψη. 6 00:00:19,600 --> 00:00:22,700 Οπότε ας ξεκινήσουμε. 7 00:00:22,700 --> 00:00:25,660 >> Βλέπουμε ότι αμέσως είμαστε ακριβώς για να βεβαιωθείτε ότι είμαστε 8 00:00:25,660 --> 00:00:27,170 χρησιμοποιώντας ανακτήσει σωστά. 9 00:00:27,170 --> 00:00:31,490 Έτσι, η χρήση του θα πρέπει απλώς να είναι κάτι όπως dot κάθετος ανακάμψει. 10 00:00:31,490 --> 00:00:35,500 >> Τώρα θα πάμε να ανοίξει το αναμενόμενο κάρτα dot ακατέργαστο αρχείο. 11 00:00:35,500 --> 00:00:39,740 Βλέπουμε εδώ ότι είμαστε χρησιμοποιώντας το σταθερή πρώτες υπογράμμισης όνομα αρχείου, 12 00:00:39,740 --> 00:00:44,200 ποια εδώ έχουμε hash ορίζεται ως κάρτα dot πρώτων. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Γι 'αυτό και πρέπει να βεβαιωθείτε ότι η άνοιξε με επιτυχία, διότι αν 15 00:00:48,210 --> 00:00:51,150 δεν, τότε θα πρέπει να προειδοποιεί τον χρήστη. 16 00:00:51,150 --> 00:00:56,770 Αλλά και αν υποτεθεί ότι το έκανε, είμαστε τώρα πρόκειται να κηρύξει buffer μεγέθους JPEG 17 00:00:56,770 --> 00:00:58,170 αρχείο μήκος του ονόματος. 18 00:00:58,170 --> 00:01:02,060 Έτσι, αυτό πρόκειται να είναι το ρυθμιστικό που θα πάμε να sprintf σε. 19 00:01:02,060 --> 00:01:04,360 >> Έτσι τι είναι το αρχείο μήκος ονόματος JPEG; 20 00:01:04,360 --> 00:01:08,490 Μέχρι εδώ, βλέπουμε ότι είναι hash ορίζεται ως οκτώ. 21 00:01:08,490 --> 00:01:10,670 Γιατί λοιπόν οκτώ; 22 00:01:10,670 --> 00:01:15,150 Καλά ένα συγκεκριμένο αρχείο θα ονομαστεί κάτι σαν το μηδέν μηδέν μηδέν. 23 00:01:15,150 --> 00:01:19,460 JPG και, στη συνέχεια, χρειαζόμαστε μια ανάστροφη κάθετο μηδέν. 24 00:01:19,460 --> 00:01:22,720 Έτσι, χρειαζόμαστε ένα ρυθμιστικό που μπορεί να αποθηκεύουν οκτώ χαρακτήρες. 25 00:01:22,720 --> 00:01:25,190 Τώρα θα πάμε να έχουν ένα μετρητή που είναι πρόκειται να παρακολουθείτε το 26 00:01:25,190 --> 00:01:27,780 Αριθμός JPEGs βρήκαμε. 27 00:01:27,780 --> 00:01:31,590 >> Και τέλος, θα πάμε να έχουν μια Αρχείο JPEG το οποίο αρχικά είναι null 28 00:01:31,590 --> 00:01:35,920 η οποία πρόκειται να είναι η επί του παρόντος ανοιχτό αρχείο που γράφουμε για. 29 00:01:35,920 --> 00:01:37,540 Τώρα θα πάμε να έχουν ένα πρόσθετο buffer. 30 00:01:37,540 --> 00:01:41,350 Αυτό δεν είναι το ίδιο όπως sprintf μας όπου αυτό ρυθμιστικό διάλυμα είναι το ένα 31 00:01:41,350 --> 00:01:45,020 ότι διαβάζετε στα δεδομένα από την κάρτα dot πρώτων. 32 00:01:45,020 --> 00:01:48,900 >> Έτσι, το ρυθμιστικό διάλυμα πρόκειται να είναι του ανυπόγραφο χαρακτήρες, το οποίο μπορείτε να 33 00:01:48,900 --> 00:01:53,560 βασικά ακριβώς μας αντιμετωπίζουν bytes, και είναι πρόκειται να είναι του μεγέθους block 34 00:01:53,560 --> 00:01:57,950 όπου, όπως θα σας πω, μέγεθος μπλοκ είναι 512. 35 00:01:57,950 --> 00:02:03,070 Έτσι, αρχεία JPEG μπορεί να θεραπεύσει τα πάντα ως μπλοκ 512 bytes. 36 00:02:03,070 --> 00:02:05,890 >> Τώρα θα πάμε να βρόχο σε όλο το αρχείο. 37 00:02:05,890 --> 00:02:12,980 Εμείς πάμε για να στ διαβάσετε σε ρυθμιστικό μας ένα ενιαίο φορές byte μέγεθος μπλοκ από 38 00:02:12,980 --> 00:02:14,710 η κάρτα dot ακατέργαστο αρχείο. 39 00:02:14,710 --> 00:02:16,630 Τώρα τι σημαίνει στ διαβάσει επιστρέψει; 40 00:02:16,630 --> 00:02:20,050 Επιστρέφει τον αριθμό των στοιχείων ότι διαβάστηκε επιτυχώς. 41 00:02:20,050 --> 00:02:27,310 Έτσι, αν καταφέρει να διαβάσει 512 bytes, τότε θέλουμε να δούμε αν αυτό ήταν ένα 42 00:02:27,310 --> 00:02:29,700 JPEG ή να το γράψετε σε ένα αρχείο JPEG. 43 00:02:29,700 --> 00:02:34,450 Και αν δεν επιστρέψει 512 bytes, τότε είτε το αρχείο κατέληξε σε 44 00:02:34,450 --> 00:02:37,870 ποια περίπτωση θα ξεφύγει από το y βρόχου, ή υπάρχει κάποιο είδος σφάλματος 45 00:02:37,870 --> 00:02:40,300 περίπτωση κατά την οποία επίσης θα ξεφύγει από ο βρόχος y, αλλά θα θέλετε να καταγγείλετε 46 00:02:40,300 --> 00:02:41,990 ότι κάτι πήγε στραβά. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Έτσι, υποθέτοντας ότι έχουμε διαβάσει με επιτυχία 512 bytes, θέλουμε να τον πρώτο έλεγχο 49 00:02:47,630 --> 00:02:53,070 να κάνουν ότι αυτοί bytes που θα μόλις διάβασα σε ξεκινήσει μια JPEG. 50 00:02:53,070 --> 00:02:56,430 Έτσι, αν είναι κεφαλίδα JPEG ρυθμιστικού μας. 51 00:02:56,430 --> 00:02:58,460 Τώρα τι κάνει κεφαλίδα JPEG; 52 00:02:58,460 --> 00:03:00,120 Ας ρίξουμε μια ματιά. 53 00:03:00,120 --> 00:03:05,270 >> Μέχρι εδώ, βλέπουμε ότι αυτή η λειτουργία είναι επιστρέφοντας έναν ταύρο, και ότι ταύρος - 54 00:03:05,270 --> 00:03:08,820 καλά εδώ, είμαστε έλεγχο για να δούμε αν header ισούται με το μηδέν αυτή η διαρκής και 55 00:03:08,820 --> 00:03:11,880 header ένα ίσον αυτή η διαρκής και κεφαλίδα δύο ισούται με τη σταθερά, 56 00:03:11,880 --> 00:03:15,640 header τρεις ισούται με αυτό ή αυτό σταθερή πού είναι όλοι αυτοί οι σταθερές 57 00:03:15,640 --> 00:03:20,340 απλά hash ορίζεται εδώ και είναι ακριβώς αυτό που σας είπα στο spec 58 00:03:20,340 --> 00:03:22,700 ότι ένα JPEG ξεκινά με. 59 00:03:22,700 --> 00:03:27,300 Και έτσι αυτή η λειτουργία είναι ακριβώς πρόκειται να επιστρέφει true αν αυτό αντιπροσωπεύει buffer 60 00:03:27,300 --> 00:03:31,750 η αρχή μιας νέας JPEG και ψευδείς διαφορετικά. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Έτσι, αν το γεγονός αυτό αποτελεί μια νέα μορφή JPEG, τότε θα πρέπει πρώτα να ελέγξετε για να δείτε αν 63 00:03:38,490 --> 00:03:42,030 Αρχείο JPEG δεν είναι ίση με null, στην οποία περίπτωση το κλείσετε. 64 00:03:42,030 --> 00:03:44,940 Και γιατί λοιπόν πρέπει να ελέγξετε για να δούμε αν δεν είναι null; 65 00:03:44,940 --> 00:03:48,980 Λοιπόν το πρώτο πολύ JPEG ότι εμείς ανακαλύψουμε ότι δεν θα έχουν ήδη 66 00:03:48,980 --> 00:03:50,440 ένα ανοιχτό αρχείο JPEG. 67 00:03:50,440 --> 00:03:55,580 Και έτσι, αν προσπαθήσουμε να κλείσει αυτό, τότε εμείς δεν κάνουμε κάτι πολύ σωστό. 68 00:03:55,580 --> 00:03:59,090 >> Αλλά κάθε μεταγενέστερη JPEG που ανοίγουμε, θέλουμε να κλείσουμε 69 00:03:59,090 --> 00:04:00,710 το προηγούμενο αρχείο. 70 00:04:00,710 --> 00:04:04,630 Έτσι τώρα θα πάμε να χρησιμοποιήσετε sprintf όπως εμείς είπε πριν, όπου είμαστε χρησιμοποιώντας το 71 00:04:04,630 --> 00:04:06,280 όνομα αρχείου ρυθμιστικό JPEG. 72 00:04:06,280 --> 00:04:09,870 Και θα πάμε να χρησιμοποιήσετε το αρχείο JPEG αναφέρουμε μορφή ως μορφή μας. 73 00:04:09,870 --> 00:04:12,030 Και τι είναι αυτό; 74 00:04:12,030 --> 00:04:18,450 Μέχρι εδώ, βλέπουμε ότι είναι εκατό τοις μηδέν 3D.JPEG όπου το μηδέν μόλις τρεις 75 00:04:18,450 --> 00:04:22,089 λέει ότι θα χρησιμοποιήσει τρεις ακέραιους γι 'αυτό παραγεμισμένο με μηδενικά. 76 00:04:22,089 --> 00:04:27,470 Έτσι, αυτό είναι το πώς θα πάρει μηδέν μηδέν one.JPEG και μηδενική 10.JPEG και ούτω καθεξής. 77 00:04:27,470 --> 00:04:29,060 >> Εμείς πάμε για να χρησιμοποιήσετε το sprintf. 78 00:04:29,060 --> 00:04:33,760 Και ο ακέραιος που είμαστε εισαγωγή σε το string είναι μουδιασμένος αρχεία JPEG 79 00:04:33,760 --> 00:04:36,380 ανακτηθεί, το οποίο είναι αρχικά μηδέν. 80 00:04:36,380 --> 00:04:39,950 Έτσι, το πρώτο αρχείο άνοιξε πρόκειται να είναι μηδέν μηδέν μηδέν dot JPEG. 81 00:04:39,950 --> 00:04:43,330 Και τότε θα φαινόταν ότι προσαύξηση, ώστε η επόμενο αρχείο που θα ανοίξει μηδέν μηδέν 82 00:04:43,330 --> 00:04:46,830 μία τελεία JPEG και θα το αυξήσετε και πάλι έτσι θα είναι μηδέν μηδέν δύο dot 83 00:04:46,830 --> 00:04:49,100 JPEG και ούτω καθεξής. 84 00:04:49,100 --> 00:04:49,850 >> Εντάξει. 85 00:04:49,850 --> 00:04:53,210 Έτσι τώρα το εσωτερικό του αρχείου JPEG το όνομα, έχουμε το όνομα του 86 00:04:53,210 --> 00:04:54,990 το αρχείο που θέλουμε. 87 00:04:54,990 --> 00:04:58,640 Μπορούμε στ ανοίξετε το αρχείο για το γράψιμο. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 Και για άλλη μια φορά, θα πρέπει να ελέγξετε για να βεβαιωθείτε βεβαιωθείτε ότι το αρχείο με επιτυχία 90 00:05:02,820 --> 00:05:08,460 άνοιξε αφού αν δεν είχε, στη συνέχεια, υπήρξε κάποια σφάλμα. 91 00:05:08,460 --> 00:05:13,100 >> Έτσι τώρα έχουμε πάρει το παρελθόν του αυτό είναι ένα μέρος JPEG. 92 00:05:13,100 --> 00:05:16,390 Και εδώ, θα δούμε θα πάμε για να γράψει με το φορμά JPEG. 93 00:05:16,390 --> 00:05:20,980 Αλλά έχουμε πρώτα τον έλεγχο αυτό που λέει εάν το αρχείο JPEG δεν είναι ίσο με null. 94 00:05:20,980 --> 00:05:22,490 Γιατί χρειαζόμαστε αυτό; 95 00:05:22,490 --> 00:05:28,020 Καλά αρχείο JPEG ισούται με null όταν σήμερα έχουν μια ανοικτή JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Τι θα συμβεί αν dot πρώτη κάρτα ξεκινά με μια δέσμη των bytes που 97 00:05:31,870 --> 00:05:33,510 δεν αντιπροσωπεύουν JPEG; 98 00:05:33,510 --> 00:05:36,240 Στη συνέχεια, θα πάμε να θέλουν να υπερπηδήσει αυτά τα bytes. 99 00:05:36,240 --> 00:05:39,600 Αν δεν έχουμε τον έλεγχο αυτό, τότε είμαστε πρόκειται να γράψω σε ένα κλειστό 100 00:05:39,600 --> 00:05:45,540 καταθέσει τα πρώτα 512 bytes η κάρτα η οποία δεν είναι καλό. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Έτσι, υποθέτοντας έχουμε ένα ανοιχτό αρχείο, στη συνέχεια, θα πάμε να γράψει σε αυτό το αρχείο το 103 00:05:51,330 --> 00:05:53,290 512 bytes που έχουμε στο ρυθμιστικό μας. 104 00:05:53,290 --> 00:05:57,390 Και είμαστε για άλλη μια φορά τον έλεγχο για να βεβαιωθείτε ότι οι 512 bytes επιτυχία 105 00:05:57,390 --> 00:06:01,140 γράφτηκαν γιατί αν δεν ήταν με επιτυχία γραπτές, στη συνέχεια, κάτι 106 00:06:01,140 --> 00:06:02,080 πήγε στραβά. 107 00:06:02,080 --> 00:06:06,540 Θα κλείσει τα αρχεία μας, να εκτυπώσετε ότι κάτι πήγε στραβά, και την επιστροφή. 108 00:06:06,540 --> 00:06:10,940 Υποθέτοντας ότι όλα πάνε σωστά, τότε εμείς θα συνεχίσουμε looping το κλείσιμο της 109 00:06:10,940 --> 00:06:15,060 παλιό αρχείο, ανοίγοντας το νέο αρχείο, το γράψιμο δεδομένων στο νέο αρχείο και έτσι 110 00:06:15,060 --> 00:06:20,990 για μέχρι το τέλος, αυτό το f διαβάσετε επιστρέφει την τιμή μηδέν τα οποία μέσα 111 00:06:20,990 --> 00:06:23,280 ότι το αρχείο έχει γίνει. 112 00:06:23,280 --> 00:06:28,490 >> Έτσι, τώρα που η ανάγνωση καρτών είναι πάνω, εμείς δείτε ότι πρόκειται να κλείσει το f 113 00:06:28,490 --> 00:06:33,250 το τελευταίο αρχείο που είχαμε ανοιχτή, αλλά είμαστε έλεγχο εάν το αρχείο JPEG 114 00:06:33,250 --> 00:06:34,900 δεν ισούται με null. 115 00:06:34,900 --> 00:06:39,520 Καλά η f τείνει νόημα διότι, όπως είμαστε το άνοιγμα αρχείων, κλείνουμε 116 00:06:39,520 --> 00:06:43,870 το προηγούμενο αρχείο, αλλά η τελευταία αρχείο που ανοίξαμε ποτέ δεν παίρνει κλειστά. 117 00:06:43,870 --> 00:06:45,580 Έτσι, αυτό είναι τι κάνει αυτό. 118 00:06:45,580 --> 00:06:47,720 >> Αλλά γιατί θα πρέπει να ελέγξετε για null; 119 00:06:47,720 --> 00:06:53,130 Λοιπόν τι θα γινόταν αν dot πρώτη κάρτα δεν έκανε έχουν ένα ενιαίο JPEG μέσα από αυτό; 120 00:06:53,130 --> 00:06:56,640 Σε αυτή την περίπτωση, θα έχουμε ποτέ δεν άνοιξε ένα αρχείο. 121 00:06:56,640 --> 00:07:00,230 Και αν δεν έχουμε ανοίξει ένα αρχείο, θα πρέπει να Δεν προσπαθείτε να κλείσετε το αρχείο. 122 00:07:00,230 --> 00:07:03,000 Οπότε αυτό είναι που αυτός ο έλεγχος να κάνει. 123 00:07:03,000 --> 00:07:07,880 >> Τώρα εδώ, όπως είπα και πριν, θα μπορούσαμε να έχει ξεσπάσει αυτή βρόχο y, είτε εάν 124 00:07:07,880 --> 00:07:13,520 η κάρτα έχει λήξει ή αν υπάρχουν κάποιο λάθος ανάγνωση από την κάρτα. 125 00:07:13,520 --> 00:07:16,680 Έτσι, αυτό τον έλεγχο για να δει αν υπήρχε Παρουσιάστηκε σφάλμα κατά την ανάγνωση από την κάρτα, σε 126 00:07:16,680 --> 00:07:19,400 οποία περίπτωση, εμείς θα πούμε εκεί ήταν το μήνυμα λάθους. 127 00:07:19,400 --> 00:07:22,130 Δεν θέλουμε ο χρήστης να σκέφτεται όλα πήγαν με επιτυχία. 128 00:07:22,130 --> 00:07:24,750 Και εμείς θα επιστρέψει ένα για το λάθος. 129 00:07:24,750 --> 00:07:29,580 >> Τέλος, θα στ κλείσει ακατέργαστο αρχείο μας, κάρτα μας dot ωμά, για να δείξει ότι 130 00:07:29,580 --> 00:07:34,070 όλα πήγαν καλά και επιστροφή το μηδέν και αυτό είναι όλο. 131 00:07:34,070 --> 00:07:36,130 >> Το όνομά μου είναι Rob και αυτό ήταν Ανάκτηση. 132 00:07:36,130 --> 00:07:42,102 >> [Παίζει μουσική]