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 สลิง: สวัสดี 4 00:00:14,080 --> 00:00:17,550 ฉันร็อบและให้ความหวังว่า วิธีนี้จะช่วยทำให้คุณ 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 ดังนั้นการใช้งานก็ควรจะเป็นสิ่งที่ เช่นจุดเฉือนกู้คืน 10 00:00:31,490 --> 00:00:35,500 >> ตอนนี้เรากำลังจะเปิดที่คาดว่าจะ ไฟล์ดิบจุดบัตร 11 00:00:35,500 --> 00:00:39,740 เรามาดูกันที่นี่ที่เรากำลังใช้ คงชื่อไฟล์ขีดดิบ 12 00:00:39,740 --> 00:00:44,200 ซึ่งที่นี่เรามีกัญชา กำหนดให้เป็นจุดบัตรดิบ 13 00:00:44,200 --> 00:00:45,030 ตกลง 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 แต่สมมติว่ามันเราตอนนี้ จะประกาศบัฟเฟอร์ขนาด 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 ที่นี่เราจะเห็นว่ามันเป็น สับกำหนดให้เป็นแปด 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 ตอนนี้เรากำลังจะมี บัฟเฟอร์เพิ่มเติม 30 00:01:37,540 --> 00:01:41,350 นี้ไม่ได้เป็นเช่นเดียวกับ sprintf ของเรา buffer ที่กันชนนี้เป็นหนึ่งใน 31 00:01:41,350 --> 00:01:45,020 ที่เรากำลังอ่านอยู่ในข้อมูล จากจุดบัตรดิบ 32 00:01:45,020 --> 00:01:48,900 >> ดังนั้นบัฟเฟอร์เป็นไปได้ของ ตัวอักษรไม่ได้ลงนามที่คุณสามารถ 33 00:01:48,900 --> 00:01:53,560 โดยทั่วไปเพียงแค่รักษาเราไบต์และมัน จะมีขนาดบล็อกขนาด 34 00:01:53,560 --> 00:01:57,950 ที่ที่เราบอกท่านว่า บล็อกขนาด 512 35 00:01:57,950 --> 00:02:03,070 ดังนั้น JPEGs คุณสามารถรักษาทุกอย่าง เป็นบล็อกของ 512 ไบต์ 36 00:02:03,070 --> 00:02:05,890 >> ตอนนี้เรากำลังจะห่วง กว่าไฟล์ทั้งหมด 37 00:02:05,890 --> 00:02:12,980 เรากำลังจะไปฉอ่านลงในบัฟเฟอร์ของเรา ครั้งขนาดบล็อกไบต์เดียวจาก 38 00:02:12,980 --> 00:02:14,710 ไฟล์ดิบจุดบัตร 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 ไบต์แล้ว เราต้องการที่จะดูว่านี้คือ 42 00:02:27,310 --> 00:02:29,700 JPEG หรือเขียนไปยังไฟล์ JPEG 43 00:02:29,700 --> 00:02:34,450 และถ้ามันไม่ได้กลับ 512 ไบต์ แล้วทั้งแฟ้มได้สิ้นสุดลงใน 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 >> ตกลง 48 00:02:42,290 --> 00:02:47,630 ดังนั้นสมมติว่าเราประสบความสำเร็จในการอ่าน ใน 512 ไบต์เราต้องการที่จะตรวจสอบครั้งแรก 49 00:02:47,630 --> 00:02:53,070 เพื่อให้ที่ไบต์เหล่านี้ที่เรา เพียงแค่เริ่มต้นการอ่านใน JPEG 50 00:02:53,070 --> 00:02:56,430 ดังนั้นถ้าเป็นส่วนหัว JPEG ของ buffer ของเรา 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 ดีที่นี่เรากำลังตรวจสอบเพื่อดูว่า ส่วนหัวเป็นศูนย์เท่ากับค่าคงที่นี้และ 55 00:03:08,820 --> 00:03:11,880 หัวหนึ่งเท่ากับค่าคงที่นี้และ ส่วนหัวของสองเท่ากับค่าคงที่นี้ 56 00:03:11,880 --> 00:03:15,640 ส่วนหัวของสามเท่ากับนี้หรือนี้ คงที่คงที่เหล่านี้ทั้งหมด 57 00:03:15,640 --> 00:03:20,340 เพียงแค่สับที่กำหนดไว้ที่นี่และมี ว่าสิ่งที่เราบอกคุณในสเป็ค 58 00:03:20,340 --> 00:03:22,700 JPEG ที่เริ่มต้นด้วย 59 00:03:22,700 --> 00:03:27,300 และฟังก์ชั่นนี้เป็นเพียงการไป กลับจริงถ้าบัฟเฟอร์นี้แสดงให้เห็นถึง 60 00:03:27,300 --> 00:03:31,750 จุดเริ่มต้นของ JPEG ใหม่ และเท็จอย่างอื่น 61 00:03:31,750 --> 00:03:32,520 >> ตกลง 62 00:03:32,520 --> 00:03:38,490 ดังนั้นถ้านี้จะเป็นตัวแทนของ JPEG ใหม่ แล้วครั้งแรกที่เราต้องการที่จะตรวจสอบเพื่อดูว่า 63 00:03:38,490 --> 00:03:42,030 ไฟล์ JPEG ไม่เท่ากับโมฆะ ซึ่งในกรณีที่เราปิดมัน 64 00:03:42,030 --> 00:03:44,940 และเพื่อให้เราจะต้องตรวจสอบว่าทำไม เพื่อดูว่ามันไม่เป็นโมฆะ? 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 และตัวเลขที่เราใส่ เป็นสตริงเป็น JPEGs ชา 79 00:04:33,760 --> 00:04:36,380 กู้คืนซึ่ง แต่เดิมเป็นศูนย์ 80 00:04:36,380 --> 00:04:39,950 ดังนั้นไฟล์แรกจะเปิด ที่จะเป็นศูนย์ศูนย์ศูนย์จุด JPEG 81 00:04:39,950 --> 00:04:43,330 แล้วเรากำลังเพิ่มขึ้นเพื่อ ไฟล์ต่อไปเราจะเปิดศูนย์ศูนย์ 82 00:04:43,330 --> 00:04:46,830 จุดหนึ่ง JPEG และเราจะเพิ่มขึ้นของมัน อีกครั้งจึงจะเป็นศูนย์สองศูนย์จุด 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 ตกลง 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 จะไม่เป็นโมฆะเท่ากับ 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 >> ถ้าจุดเริ่มต้นบัตรดิบ กับพวงของไบต์ที่ 97 00:05:31,870 --> 00:05:33,510 ไม่ได้เป็นตัวแทน JPEG? 98 00:05:33,510 --> 00:05:36,240 จากนั้นเราจะต้องการที่จะ ข้ามไบต์ที่ 99 00:05:36,240 --> 00:05:39,600 ถ้าเราไม่ได้มีการตรวจสอบนี้แล้วเรา จะเขียนไปยังไม่ได้เปิด 100 00:05:39,600 --> 00:05:45,540 ยื่น 512 ไบต์แรกของ บัตรที่ไม่ดี 101 00:05:45,540 --> 00:05:46,030 ตกลง 102 00:05:46,030 --> 00:05:51,330 >> ดังนั้นสมมติว่าเรามีไฟล์ที่เปิดแล้ว ที่เรากำลังจะเขียนไฟล์ที่ 103 00:05:51,330 --> 00:05:53,290 512 ไบต์ที่เรามีในบัฟเฟอร์ของเรา 104 00:05:53,290 --> 00:05:57,390 และเรากำลังตรวจสอบอีกครั้งเพื่อให้ ให้แน่ใจว่าประสบความสำเร็จใน 512 ไบต์ 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 สมมติว่าทุกอย่างไปได้อย่างถูกต้องแล้ว เราจะให้วนลูปปิด 109 00:06:10,940 --> 00:06:15,060 แฟ้มเก่าเปิดไฟล์ใหม่ที่เขียน ข้อมูลไปยังแฟ้มใหม่และอื่น ๆ 110 00:06:15,060 --> 00:06:20,990 จนกระทั่งในที่สุดฉนี้อ่าน กลับเป็นศูนย์ซึ่งหมายถึง 111 00:06:20,990 --> 00:06:23,280 ว่าไฟล์จะทำ 112 00:06:23,280 --> 00:06:28,490 >> ดังนั้นขณะนี้ที่อ่านบัตรมีมากกว่าเรา เห็นว่าเรากำลังจะปิดฉ 113 00:06:28,490 --> 00:06:33,250 ไฟล์สุดท้ายที่เราได้เปิด แต่ เรากำลังตรวจสอบว่าไฟล์ JPEG 114 00:06:33,250 --> 00:06:34,900 ไม่ว่างไม่เท่ากัน 115 00:06:34,900 --> 00:06:39,520 ดีเอทำให้รู้สึกใกล้ชิดเพราะเป็น เรากำลังเปิดไฟล์เรากำลังปิด 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 ดีสิ่งที่ถ้าจุดบัตรดิบไม่ได้ มีเพียงครั้งเดียว 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 >> สุดท้ายเราจะฉปิดไฟล์ดิบของเรา บัตรของเราจุดดิบเพื่อบ่งชี้ว่า 130 00:07:29,580 --> 00:07:34,070 ทุกอย่างเป็นไปด้วยดีและการกลับมา ศูนย์และที่มัน 131 00:07:34,070 --> 00:07:36,130 >> ชื่อของฉันคือร็อบและนี่คือการกู้คืน 132 00:07:36,130 --> 00:07:42,102 >> [เล่นดนตรี]