-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
752 lines (530 loc) · 82.5 KB
/
Copy pathindex.html
File metadata and controls
752 lines (530 loc) · 82.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {"hostname":"honglangdi.github.io","root":"/","scheme":"Gemini","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
</script>
<meta name="description" content="热爱生活,敢想敢做,对技术多一份热爱">
<meta property="og:type" content="website">
<meta property="og:title" content="阿雨的博客">
<meta property="og:url" content="https://honglangdi.github.io/index.html">
<meta property="og:site_name" content="阿雨的博客">
<meta property="og:description" content="热爱生活,敢想敢做,对技术多一份热爱">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="洪浪迪">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="https://honglangdi.github.io/">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome : true,
isPost : false,
lang : 'zh-CN'
};
</script>
<title>阿雨的博客</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<h1 class="site-title">阿雨的博客</h1>
<span class="logo-line-after"><i></i></span>
</a>
<p class="site-subtitle" itemprop="description">追求最强的自己</p>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger">
</div>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="main-menu menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档<span class="badge">3</span></a>
</li>
</ul>
</nav>
</div>
</header>
<div class="back-to-top">
<i class="fa fa-arrow-up"></i>
<span>0%</span>
</div>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content index posts-expand">
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://honglangdi.github.io/2021/06/03/JavaIO%E6%B5%81/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="洪浪迪">
<meta itemprop="description" content="热爱生活,敢想敢做,对技术多一份热爱">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="阿雨的博客">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2021/06/03/JavaIO%E6%B5%81/" class="post-title-link" itemprop="url">JavaIO流</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2021-06-03 21:26:53" itemprop="dateCreated datePublished" datetime="2021-06-03T21:26:53+08:00">2021-06-03</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2022-07-05 17:33:02" itemprop="dateModified" datetime="2022-07-05T17:33:02+08:00">2022-07-05</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/Java/" itemprop="url" rel="index"><span itemprop="name">Java</span></a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="一、IO流"><a href="#一、IO流" class="headerlink" title="一、IO流"></a>一、IO流</h1><h2 id="IO流的概述和分类"><a href="#IO流的概述和分类" class="headerlink" title="IO流的概述和分类"></a>IO流的概述和分类</h2><h3 id="IO流概述"><a href="#IO流概述" class="headerlink" title="IO流概述"></a>IO流概述</h3><ul>
<li><p>IO:输入/输出 (Input / Ouput)</p>
</li>
<li><p> 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。</p>
</li>
<li><p> IO流就是用来处理设备间数据传输问题的</p>
<p> 常见的应用:文件复制,文件上传,文件下载</p>
</li>
</ul>
<h3 id="IO流的分类"><a href="#IO流的分类" class="headerlink" title="IO流的分类"></a>IO流的分类</h3><ul>
<li><p>按照数据的流向</p>
<p> 输入流:读数据</p>
<p> 输出流:写数据</p>
</li>
<li><p>按照数据的类型</p>
<p> 字节流</p>
<p> 字节输入流 ; 字节输出流</p>
<p> 字符流</p>
<p> 字符输入流 ; 字符输出流</p>
<p>一般来说,我们说的IO流分类是按照数据类型来分的</p>
</li>
</ul>
<h2 id="各种IO流"><a href="#各种IO流" class="headerlink" title="各种IO流"></a>各种IO流</h2><h3 id="1、File类"><a href="#1、File类" class="headerlink" title="1、File类"></a>1、File类</h3><h4 id="File类的构造方法"><a href="#File类的构造方法" class="headerlink" title="File类的构造方法"></a>File类的构造方法</h4><ul>
<li>File(String pathname) 通过将给定的路径字符串装换为抽象的路径名来创建新的File实例</li>
<li>File(String parent,String child) 从父路径名字符串和子路径名字符串创建新的File实例</li>
<li>File (File parent,String child) 从父抽象路径和子路径名字字符串创建新的File实例</li>
</ul>
<h4 id="File类的创建功能"><a href="#File类的创建功能" class="headerlink" title="File类的创建功能"></a>File类的创建功能</h4><ul>
<li> public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件</li>
<li> public boolean mkdir() 创建此抽象路径名命名的目录</li>
<li> public boolean mkdirs() 创建由此抽象路径命名的目录,包括任何必需但不存在的父目录</li>
</ul>
<p>注意:不能根据路径名判断是否是路径还是文件,应该根据调用的方法判断</p>
<h4 id="File类的判断和获取功能"><a href="#File类的判断和获取功能" class="headerlink" title="File类的判断和获取功能"></a>File类的判断和获取功能</h4><ul>
<li> public boolean isDirectory() 测试此抽象路径名表示的 File 是否为目录</li>
<li> public boolean isFile() 测试此抽象路径名表示的File是否为文件</li>
<li> public boolean exists() 测试此抽象路径名表示的File是否存在</li>
<li> public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串</li>
<li> public String getPath() 将此路径名转化为路径名字符串</li>
<li> public String getName() 返回此抽象路径名表示的文件或目录的名称</li>
<li> public String[] list 返回此抽象路径名表示的目录中的文件和目录的名称的字符串数组</li>
<li> public File[] listFiles() 返回此抽象路径名表示的文件和目录的File对象数组</li>
</ul>
<h4 id="File-类的删除功能"><a href="#File-类的删除功能" class="headerlink" title="File 类的删除功能"></a>File 类的删除功能</h4><ul>
<li>public boolean delete() 删除由此路径名表示的文件或者目录</li>
</ul>
<p>注意:如果是删除目录,目录中存在你内容,应该先删除内部文件 ,在删除目录</p>
<h4 id="递归"><a href="#递归" class="headerlink" title="递归"></a>递归</h4><p>递归概述:以编程的角度来看,递归是指方法定义中调用方法本身的现象</p>
<p>递归解决问题的思路:</p>
<p>把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。</p>
<p>递归要解决问题要找到两个内容:</p>
<ul>
<li><p>递归出口 : 否则会出现内存溢出</p>
</li>
<li><p>递归规则 : 与原问题相似的规模较小的问题</p>
<p>用递归求阶乘</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">File_text5</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</span><br><span class="line"> <span class="comment">//调用方法</span></span><br><span class="line"> <span class="keyword">int</span> result = jc(<span class="number">5</span>);</span><br><span class="line"> <span class="comment">//输出结果</span></span><br><span class="line"> System.out.println(<span class="string">"5 的阶乘是:"</span>+result);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//定义一个方法,用于递归求阶乘,参数为一个int类型的变量</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span> <span class="title">jc</span><span class="params">(<span class="keyword">int</span> n)</span></span>{</span><br><span class="line"> <span class="comment">//在方法内判断该变量的值是否为 1</span></span><br><span class="line"> <span class="keyword">if</span> (n==<span class="number">1</span>) {</span><br><span class="line"> <span class="comment">//是,返回 1</span></span><br><span class="line"> <span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line"> }<span class="keyword">else</span>{</span><br><span class="line"> <span class="comment">//不是,返回 n*(n-1)</span></span><br><span class="line"> <span class="keyword">return</span> n*jc(n-<span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">//输出结果</span></span><br><span class="line"><span class="comment">//5 的阶乘是:120</span></span><br></pre></td></tr></table></figure>
<h5 id="案例:遍历文件目录"><a href="#案例:遍历文件目录" class="headerlink" title="案例:遍历文件目录"></a>案例:遍历文件目录</h5><ul>
<li><p>需求:给定一个路径(D:\\itcast),请通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台</p>
<p>思路:</p>
<ol>
<li><p>根据给定的路径创建一个File对象</p>
</li>
<li><p>定义一个方法,用于获取给定目录下的所有内容,参数为第1步创建的File对象</p>
</li>
<li><p>获取给定的File目录下所有文件或者目录的File数组</p>
</li>
<li><p>遍历该File数组,得到每一个File对象</p>
</li>
<li><p>判断该File对象是否是目录</p>
<p> 是:递归调用</p>
<p> 不是:获取绝对路径输出在控制台</p>
</li>
<li><p>调用方法</p>
</li>
</ol>
</li>
<li><p>代码块</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> itheima;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.File;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">File_text6</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</span><br><span class="line"> <span class="comment">//根据给定的路径创建一个File对象</span></span><br><span class="line"> File srcFile = <span class="keyword">new</span> File(<span class="string">"D:\\itcast"</span>);</span><br><span class="line"> <span class="comment">//调用方法</span></span><br><span class="line"> getAllFilePath(srcFile);</span><br><span class="line"> }</span><br><span class="line"> <span class="comment">//定义一个方法,用于获取给定目录下的内容,参数为第1步创建的File对象</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">getAllFilePath</span><span class="params">(File srcFile)</span></span>{</span><br><span class="line"> <span class="comment">//获取给定的File目录下所有文件或者目录的File数组</span></span><br><span class="line"> File[] fileArray = srcFile.listFiles();</span><br><span class="line"> <span class="comment">//遍历该File数组,得到每一个File对象</span></span><br><span class="line"> <span class="keyword">if</span> (fileArray != <span class="keyword">null</span>){</span><br><span class="line"> <span class="keyword">for</span> (File file : fileArray){</span><br><span class="line"> <span class="comment">//判断该File对象是否是目录</span></span><br><span class="line"> <span class="keyword">if</span> (file.isDirectory()){</span><br><span class="line"> <span class="comment">//是:递归调用</span></span><br><span class="line"> getAllFilePath(file);</span><br><span class="line"> }<span class="keyword">else</span>{</span><br><span class="line"> <span class="comment">//不是:获取绝对路径输出在控制台</span></span><br><span class="line"> System.out.println(file.getAbsolutePath());</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="comment">//输出结果</span></span><br><span class="line"><span class="comment">//D:\itcast\java.txt</span></span><br><span class="line"><span class="comment">//D:\itcast\javaSE\javase.txt</span></span><br><span class="line"><span class="comment">//D:\itcast\javase.txt</span></span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure></li>
</ul>
<figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"> </span><br><span class="line"> </span><br></pre></td></tr></table></figure></li>
</ul>
<h3 id="2、字节流"><a href="#2、字节流" class="headerlink" title="2、字节流"></a>2、字节流</h3><h4 id="字节流写数据"><a href="#字节流写数据" class="headerlink" title="字节流写数据"></a>字节流写数据</h4><h5 id="字节流抽象基类"><a href="#字节流抽象基类" class="headerlink" title="字节流抽象基类"></a>字节流抽象基类</h5><ul>
<li> InputStream: 这个抽象类是表示字节输入流的所有类的超类</li>
<li> OutputStream: 这个抽象类是表示字节输出流的所有类的超类</li>
<li> 子类名特点:子类名称都是以其父类名作为子类名的后缀</li>
</ul>
<h5 id="FileOutputStream"><a href="#FileOutputStream" class="headerlink" title="FileOutputStream"></a>FileOutputStream</h5><ul>
<li>FileOutputStream:文件输出流用于数据写入File</li>
<li>FileOutputStream(String name): 创建文件输出流以指定的名称写入文件</li>
</ul>
<h5 id="使用字节输出流写数据的步骤"><a href="#使用字节输出流写数据的步骤" class="headerlink" title="使用字节输出流写数据的步骤"></a>使用字节输出流写数据的步骤</h5><ul>
<li> 创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)</li>
<li> 调用字节输出流对象的写数据方法</li>
<li> 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)</li>
</ul>
<h5 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h5><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.io.File;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">InputStream1</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//创建字节输出流对象</span></span><br><span class="line"> <span class="comment">//FileOutputStream(String name): 创建文件输出流以指定的名称写入文件</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\myfile\\src\\fos.txt"</span>);</span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> 做了三件事:</span></span><br><span class="line"><span class="comment"> A:调用系统功能创建了文件</span></span><br><span class="line"><span class="comment"> B:创建了字节输出流对象</span></span><br><span class="line"><span class="comment"> C:让字节输出流对象指向创建好的文件</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//void write (int b) : 将指定的字节写入此文件输出流中</span></span><br><span class="line"> fos.write(<span class="number">97</span>);</span><br><span class="line"><span class="comment">// fos.write(57);</span></span><br><span class="line"><span class="comment">// fos.write(55);</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//最后都要释放资源</span></span><br><span class="line"> <span class="comment">//void close () : 关闭此文件输出流并释放与此流相关联的任何系统资源</span></span><br><span class="line"> fos.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h5 id="字节流写数据的3种方式"><a href="#字节流写数据的3种方式" class="headerlink" title="字节流写数据的3种方式"></a>字节流写数据的3种方式</h5><ul>
<li><p>void write(int b) 将指定的字节写入此文件输出流,一次写入一个字节数据</p>
</li>
<li><p>void write(byte[] b) 将b.length字节从指定的字节数组写入此文件输出流,一次写一个字节数组数据</p>
</li>
<li><p>void write(byte[] b, int off ,int len) 将len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流,一次写入一个字节数组的部分数据</p>
</li>
<li><p>代码块</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.io.File;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo1</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//FileOutputStream (String name) : 创建文件输出流以指定的名称写入文件</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos.txt"</span>);</span><br><span class="line"> <span class="comment">//new File(name)</span></span><br><span class="line"><span class="comment">// FileOutputStream fos = new FileOutputStream(new File("MYByteStream\\fos.txt"));</span></span><br><span class="line"><span class="comment">// File file = new File("MYByteStream\\fos.txt");</span></span><br><span class="line"><span class="comment">// FileOutputStream fos2= new FileOutputStream(file);</span></span><br><span class="line"><span class="comment">// FileOutputStream fos2 = new FileOutputStream(new File("MYByteStream\\fos.txt"));</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//void write(int b) 将指定的字节写入此文件输出流</span></span><br><span class="line"><span class="comment">// fos.write(97);</span></span><br><span class="line"><span class="comment">// fos.write(98);</span></span><br><span class="line"><span class="comment">// fos.write(99);</span></span><br><span class="line"><span class="comment">// fos.write(100);</span></span><br><span class="line"><span class="comment">// fos.write(101);</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//void write(byte[] b) 将b.length字节从指定的字节数组写入此文件输出流</span></span><br><span class="line"><span class="comment">// byte[] bys = {97,98,99,100,101};</span></span><br><span class="line"> <span class="comment">//byte[] getBytes() : 返回字符串对应的字节数组</span></span><br><span class="line"> <span class="keyword">byte</span>[] bys = <span class="string">"abcdefg"</span>.getBytes();</span><br><span class="line"><span class="comment">// fos.write(bys);</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//void write(byte[] b, int off ,int len) 将len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流</span></span><br><span class="line"> fos.write(bys,<span class="number">0</span>,bys.length);</span><br><span class="line"> fos.write(bys,<span class="number">1</span>,<span class="number">4</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fos.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure></li>
</ul>
<h5 id="字节流写数据的个小问题"><a href="#字节流写数据的个小问题" class="headerlink" title="字节流写数据的个小问题"></a>字节流写数据的个小问题</h5><h6 id="字节流写数据如何换行"><a href="#字节流写数据如何换行" class="headerlink" title="字节流写数据如何换行"></a>字节流写数据如何换行</h6><ul>
<li><p>写完数据后,加换行符</p>
<pre><code> Windows:\r\n
</code></pre>
<p> Linux: \n</p>
<p> Mac: \r</p>
</li>
</ul>
<h6 id="字节流写数据如何实现追加写入"><a href="#字节流写数据如何实现追加写入" class="headerlink" title="字节流写数据如何实现追加写入"></a>字节流写数据如何实现追加写入</h6><ul>
<li><p> public FileOutputStream(String name ,boolean append)</p>
</li>
<li><p>创建文件输出流以指定的名称写入文件。如果第二个参数为 true ,则字节将写入文件的末尾而不是开头</p>
</li>
<li><p>代码块</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.io.File;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo1</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//创建字节输出流对象</span></span><br><span class="line"><span class="comment">// FileOutputStream fos = new FileOutputStream("D:\\JAVAdaima\\MYByteStream\\fos.txt");</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos.txt"</span>,<span class="keyword">true</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//写数据</span></span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i=<span class="number">0</span>;i < <span class="number">10</span>; i++){</span><br><span class="line"> fos.write(<span class="string">"Hello"</span>.getBytes());</span><br><span class="line"> fos.write(<span class="string">"\r\n"</span>.getBytes());</span><br><span class="line"> }</span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fos.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure></li>
</ul>
<h5 id="字节流写数据加异常处理"><a href="#字节流写数据加异常处理" class="headerlink" title="字节流写数据加异常处理"></a>字节流写数据加异常处理</h5><ul>
<li><p>finally:在异常处理时提供finally块来执行所有清除操作。比如说IO流中的释放资源</p>
</li>
<li><p>特点:被finally控制的语句一定会执行,除非JVM退出</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>{</span><br><span class="line"> 可能出现异常的代码;</span><br><span class="line">}<span class="keyword">catch</span>{</span><br><span class="line"> 异常的处理代码;</span><br><span class="line">}<span class="keyword">finally</span>{</span><br><span class="line"> 执行所有的清除操作;</span><br><span class="line">}</span><br></pre></td></tr></table></figure></li>
</ul>
<h6 id="代码块"><a href="#代码块" class="headerlink" title="代码块"></a>代码块</h6><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo2</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</span><br><span class="line"> <span class="comment">//创建字节输出流对象</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">null</span>;</span><br><span class="line"> <span class="keyword">try</span> {</span><br><span class="line"> fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos.txt"</span>, <span class="keyword">true</span>);</span><br><span class="line"> fos.write(<span class="string">"Hello"</span>.getBytes());</span><br><span class="line"> } <span class="keyword">catch</span> (IOException e) {</span><br><span class="line"> e.printStackTrace();</span><br><span class="line"> } <span class="keyword">finally</span> {</span><br><span class="line"> <span class="keyword">if</span> (fos != <span class="keyword">null</span>) {</span><br><span class="line"> <span class="keyword">try</span> {</span><br><span class="line"> fos.close();</span><br><span class="line"> } <span class="keyword">catch</span> (IOException e) {</span><br><span class="line"> e.printStackTrace();</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h4 id="字节流读数据"><a href="#字节流读数据" class="headerlink" title="字节流读数据"></a>字节流读数据</h4><h5 id="字节流读数据(一次读取一个字节)"><a href="#字节流读数据(一次读取一个字节)" class="headerlink" title="字节流读数据(一次读取一个字节)"></a>字节流读数据(一次读取一个字节)</h5><ul>
<li><p>FileInputStream : 从文件系统中的文件获取输入字节</p>
</li>
<li><p>FileInputStream(String name) : 通过打开与实际文件的链接来创建一个FileInputStream,该文件由文件系统中的路径名 name 命名</p>
</li>
<li><p>代码块</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.itheima2;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileInputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">A001</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//创建字节输入流对象</span></span><br><span class="line"> <span class="comment">//FileInputStream(String name)</span></span><br><span class="line"> FileInputStream fis = <span class="keyword">new</span> FileInputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos.txt"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//调用字节输入流对象的读数据方法</span></span><br><span class="line"> <span class="comment">//int read() : 从该输入流读取一个字符串的数据</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> //第一次读数据</span></span><br><span class="line"><span class="comment"> int by = fis.read();</span></span><br><span class="line"><span class="comment"> System.out.println(by);</span></span><br><span class="line"><span class="comment"> System.out.println((char)by);</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //第二次读数据</span></span><br><span class="line"><span class="comment"> by = fis.read();</span></span><br><span class="line"><span class="comment"> System.out.println(by);</span></span><br><span class="line"><span class="comment"> System.out.println((char)by);</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //再多读两次</span></span><br><span class="line"><span class="comment"> by = fis.read();</span></span><br><span class="line"><span class="comment"> System.out.println(by);</span></span><br><span class="line"><span class="comment"> by = fis.read();</span></span><br><span class="line"><span class="comment"> System.out.println(by);</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //如果到达文件的末尾:-1</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> int by = fis.read();</span></span><br><span class="line"><span class="comment"> while (by != -1) {</span></span><br><span class="line"><span class="comment"> System.out.print((char) by);</span></span><br><span class="line"><span class="comment"> by = fis.read();</span></span><br><span class="line"><span class="comment"> }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//优化上面的程序</span></span><br><span class="line"> <span class="keyword">int</span> by;</span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> fis.read() : 读数据</span></span><br><span class="line"><span class="comment"> by=fis.read() : 把读到的数据赋值给by</span></span><br><span class="line"><span class="comment"> by != -1 : 判断读取到的数据是否是 -1</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="keyword">while</span> ((by = fis.read()) != -<span class="number">1</span>) {</span><br><span class="line"> System.out.println(by);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fis.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure></li>
</ul>
<h5 id="字节流读数据(一次读取一个字节数组)"><a href="#字节流读数据(一次读取一个字节数组)" class="headerlink" title="字节流读数据(一次读取一个字节数组)"></a>字节流读数据(一次读取一个字节数组)</h5><h6 id="代码块-1"><a href="#代码块-1" class="headerlink" title="代码块"></a>代码块</h6><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.itheima2;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileInputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">A003</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//创建字节输入流对象</span></span><br><span class="line"> FileInputStream fis = <span class="keyword">new</span> FileInputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos.txt"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//调用字节输出流对象的读取数据方法</span></span><br><span class="line"> <span class="comment">//int read (byte[] b) : 从该输入流读取最多 b.length 个字节的数据到一个字节数组</span></span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> byte[] bys = new byte[5];</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //第一次读取数据</span></span><br><span class="line"><span class="comment"> int len = fis.read(bys);</span></span><br><span class="line"><span class="comment"> System.out.println(len);</span></span><br><span class="line"><span class="comment"> //String (byte[] bytes)</span></span><br><span class="line"><span class="comment"> System.out.println(new String(bys, 0, len));</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //第二次读取数据</span></span><br><span class="line"><span class="comment"> len = fis.read(bys);</span></span><br><span class="line"><span class="comment"> System.out.println(len);</span></span><br><span class="line"><span class="comment"> System.out.println(new String(bys, 0, len));</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //第三次读取数据</span></span><br><span class="line"><span class="comment"> len = fis.read(bys);</span></span><br><span class="line"><span class="comment"> System.out.println(len);</span></span><br><span class="line"><span class="comment"> System.out.println(new String(bys, 0, len));</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //再多读取两次</span></span><br><span class="line"><span class="comment"> len = fis.read(bys);</span></span><br><span class="line"><span class="comment"> System.out.println(len);</span></span><br><span class="line"><span class="comment"> len = fis.read(bys);</span></span><br><span class="line"><span class="comment"> System.out.println(len);</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//优化代码</span></span><br><span class="line"> <span class="keyword">byte</span>[] bys = <span class="keyword">new</span> <span class="keyword">byte</span>[<span class="number">1024</span>];</span><br><span class="line"> <span class="keyword">int</span> len;</span><br><span class="line"> <span class="keyword">while</span> ((len = fis.read(bys)) != -<span class="number">1</span>) {</span><br><span class="line"> System.out.println(<span class="keyword">new</span> String(bys, <span class="number">0</span>, len));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fis.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h3 id="字节缓冲流"><a href="#字节缓冲流" class="headerlink" title="字节缓冲流"></a>字节缓冲流</h3><h5 id="字节缓冲流-1"><a href="#字节缓冲流-1" class="headerlink" title="字节缓冲流"></a>字节缓冲流</h5><ul>
<li> BufferOutputStream : 该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统被调用</li>
<li> BufferInputStream : 创建 BufferInputStream 将创建一个内部缓冲区数组,当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次填充很多字节</li>
</ul>
<h5 id="构造方法"><a href="#构造方法" class="headerlink" title="构造方法"></a>构造方法</h5><ul>
<li> 字节缓冲输出流 : BufferedOutputStream( OutputStream out)</li>
<li> 字节缓冲输入流 : BufferedInputStream( InputStream in)</li>
</ul>
<h6 id="为什么构造方法需要的是字节流?而不是具体点的文件或者路径?"><a href="#为什么构造方法需要的是字节流?而不是具体点的文件或者路径?" class="headerlink" title="为什么构造方法需要的是字节流?而不是具体点的文件或者路径?"></a>为什么构造方法需要的是字节流?而不是具体点的文件或者路径?</h6><ul>
<li> 字节缓冲流仅仅提供缓冲区,而真正的读写数据还得依靠基本的字节流对象进行操作</li>
</ul>
<h6 id="代码-1"><a href="#代码-1" class="headerlink" title="代码"></a>代码</h6><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.itheima4;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.*;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ACS1</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">/*</span></span><br><span class="line"><span class="comment"> // 字节缓冲输出流: BufferedOutputStream(OutputStream out)</span></span><br><span class="line"><span class="comment">// FileOutputStream fos = new FileOutputStream("D:\\JAVAdaima\\MYByteStream\\fos1.txt");</span></span><br><span class="line"><span class="comment">// BufferedOutputStream bos = new BufferedOutputStream(fos);</span></span><br><span class="line"><span class="comment"> BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\JAVAdaima\\MYByteStream\\fos1.txt"));</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //写数据</span></span><br><span class="line"><span class="comment"> bos.write("Hello\r\n".getBytes());</span></span><br><span class="line"><span class="comment"> bos.write("World\r\n".getBytes());</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> //释放资源</span></span><br><span class="line"><span class="comment"> bos.close();</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="comment">//字节缓冲输入流:BufferedInputStream( InputStream in)</span></span><br><span class="line"> BufferedInputStream bis = <span class="keyword">new</span> BufferedInputStream(<span class="keyword">new</span> FileInputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\fos1.txt"</span>));</span><br><span class="line"></span><br><span class="line"> <span class="comment">//一次读取一个字节数据</span></span><br><span class="line"> <span class="keyword">int</span> by;</span><br><span class="line"> <span class="keyword">while</span> ((by = bis.read()) != -<span class="number">1</span>) {</span><br><span class="line"> System.out.print((<span class="keyword">char</span>) by);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//一次读取一个字节数组的数据</span></span><br><span class="line"> <span class="keyword">byte</span>[] bys = <span class="keyword">new</span> <span class="keyword">byte</span>[<span class="number">1024</span>];</span><br><span class="line"> <span class="keyword">int</span> len;</span><br><span class="line"> <span class="keyword">while</span> ((len = bis.read(bys)) != -<span class="number">1</span>) {</span><br><span class="line"> System.out.print(<span class="keyword">new</span> String(bys, <span class="number">0</span>, len));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> bis.close();</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h5 id="案例:字节流复制文本文件"><a href="#案例:字节流复制文本文件" class="headerlink" title="案例:字节流复制文本文件"></a>案例:字节流复制文本文件</h5><h6 id="需求"><a href="#需求" class="headerlink" title="需求"></a>需求</h6><p>把 “ D:\itcast\java.txt “ 复制到模块目录下的 “ java.txt “ </p>
<h6 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h6><ol>
<li><p>复制文本文件,其实就是把文本文件的内容从文件中读取出来( 数据源 ) ,然后写入另一个文本文件中 ( 目的地 )</p>
</li>
<li><p>数据源:</p>
<pre><code>D:\\itcast\\java.txt ------读数据-----InputStream------FileInputStream
</code></pre>
</li>
<li><p>目的地:</p>
<pre><code>MYByteStream\\java.txt-----写数据-----OutputStream------FileOutputStream
</code></pre>
</li>
</ol>
<h6 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h6><ul>
<li>根据数据源创建字节输入流对象</li>
<li>根据目的地创建字节输出流对象</li>
<li>读写数据,复制文本文件( 一次读取一个字节 , 一次写入一个字节)</li>
<li>释放资源</li>
</ul>
<h6 id="代码-2"><a href="#代码-2" class="headerlink" title="代码"></a>代码</h6><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.itheima2;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileInputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">A002</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//根据数据源创建字节输入流对象</span></span><br><span class="line"> FileInputStream fis = <span class="keyword">new</span> FileInputStream(<span class="string">"D:\\itcast\\java.txt"</span>);</span><br><span class="line"> <span class="comment">//根据目的地创建字节输出流对象</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\src\\java.txt"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//读写数据,复制文本文件( 一次读取一个字节 , 一次写入一个字节)</span></span><br><span class="line"> <span class="keyword">int</span> by;</span><br><span class="line"> <span class="keyword">while</span> ((by=fis.read())!= -<span class="number">1</span>){</span><br><span class="line"> fos.write(by);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fis.close();</span><br><span class="line"> fos.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h5 id="案例:字节流复制图片"><a href="#案例:字节流复制图片" class="headerlink" title="案例:字节流复制图片"></a>案例:字节流复制图片</h5><h6 id="需求-1"><a href="#需求-1" class="headerlink" title="需求"></a>需求</h6><p>把 “ D:\\itcast\\511.png “ 复制到模块目录下的 “ 511.png”</p>
<h6 id="思路-1"><a href="#思路-1" class="headerlink" title="思路"></a>思路</h6><ul>
<li>根据数据源创建字节输入流对象</li>
<li>根据目的地创建字节输出流对象</li>
<li>读写数据,复制文本文件( 一次读取一个字节数组 , 一次写入一个字节数组)</li>
<li>释放资源</li>
</ul>
<h6 id="代码块-2"><a href="#代码块-2" class="headerlink" title="代码块"></a>代码块</h6><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.itheima2;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileInputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">A004</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> IOException </span>{</span><br><span class="line"> <span class="comment">//根据数据源创建字节输入流对象</span></span><br><span class="line"> FileInputStream fis = <span class="keyword">new</span> FileInputStream(<span class="string">"D:\\itcast\\511.png"</span>);</span><br><span class="line"> <span class="comment">//根据目的地创建字节输出流对象</span></span><br><span class="line"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(<span class="string">"D:\\JAVAdaima\\MYByteStream\\511.png"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//读写数据,复制图片(一次读取一个字节数组, 一次写入一个字节数组)</span></span><br><span class="line"> <span class="keyword">byte</span>[] bys = <span class="keyword">new</span> <span class="keyword">byte</span>[<span class="number">1024</span>];</span><br><span class="line"> <span class="keyword">int</span> len;</span><br><span class="line"> <span class="keyword">while</span> ((len = fis.read(bys)) != -<span class="number">1</span>) {</span><br><span class="line"> fos.write(bys, <span class="number">0</span>, len);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//释放资源</span></span><br><span class="line"> fis.close();</span><br><span class="line"> fos.close();</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h5 id="案例:复制视频"><a href="#案例:复制视频" class="headerlink" title="案例:复制视频"></a>案例:复制视频</h5><h6 id="需求-2"><a href="#需求-2" class="headerlink" title="需求"></a>需求</h6><p>把 “ D:\\itcast\\123.avi” 复制到模块目录下的 “ 123.avi “</p>
<h6 id="思路-2"><a href="#思路-2" class="headerlink" title="思路"></a>思路</h6><ul>
<li>根据数据源创建字节输入流对象</li>
<li>根据目的地创建字节输出流对象</li>
<li>读写数据,复制视频</li>
<li>释放资源</li>
</ul>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://honglangdi.github.io/2021/05/04/MyBatis/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="洪浪迪">
<meta itemprop="description" content="热爱生活,敢想敢做,对技术多一份热爱">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="阿雨的博客">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2021/05/04/MyBatis/" class="post-title-link" itemprop="url">MyBatis</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2021-05-04 15:05:26" itemprop="dateCreated datePublished" datetime="2021-05-04T15:05:26+08:00">2021-05-04</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2022-05-03 15:28:42" itemprop="dateModified" datetime="2022-05-03T15:28:42+08:00">2022-05-03</time>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<hr>
<h2 id="transactionManager"><a href="#transactionManager" class="headerlink" title="transactionManager"></a>transactionManager</h2><p>transactionManager:mybatis提交事务,回顾事务的方式</p>
<p> type:事务处理的类型</p>
<p> 1)JDBC:表示mybatis底层是调用JDBC中的Connection对象的,commit,rollback</p>
<p> 2)MANAGED:把mybatis的事务处理委托给其他的容器(一个服务器软件,一个框架(Spring))</p>
<h2 id="DataSource"><a href="#DataSource" class="headerlink" title="DataSource"></a>DataSource</h2><p>DataSource:表示数据源,java体系中,规定了javax.sql.DataSource都是数据源,数据源都是connection对象</p>
<p> type用来指定数据源的类型</p>
<p> 1)POOLED:使用连接池,mybatis会创建 PooledDataSource 类</p>
<p> 2)UPOOLED: 不使用连接池,每次执行 sql 的时候,先创建连接,再使用连接,最后关闭连接。</p>
<p> 不使用连接池,mybatis会创建一个 UnPooledDataSource 来管理 connection 对象的使用</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://honglangdi.github.io/2021/05/02/hello-world/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="洪浪迪">
<meta itemprop="description" content="热爱生活,敢想敢做,对技术多一份热爱">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="阿雨的博客">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2021/05/02/hello-world/" class="post-title-link" itemprop="url">Hello World</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2021-05-02 09:24:36" itemprop="dateCreated datePublished" datetime="2021-05-02T09:24:36+08:00">2021-05-02</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2022-07-05 17:31:44" itemprop="dateModified" datetime="2022-07-05T17:31:44+08:00">2022-07-05</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/HelloWorld/" itemprop="url" rel="index"><span itemprop="name">HelloWorld</span></a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>Welcome to <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a target="_blank" rel="noopener" href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a target="_blank" rel="noopener" href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a target="_blank" rel="noopener" href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Java-Quick-Start-Test"><a href="#Java-Quick-Start-Test" class="headerlink" title="Java Quick Start Test"></a>Java Quick Start Test</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">HelloWorld</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</span><br><span class="line"> System.out.println(<span class="string">"Hello World"</span>);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="C-Quick-Start-Test"><a href="#C-Quick-Start-Test" class="headerlink" title="C Quick Start Test"></a>C Quick Start Test</h3><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"> </span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="comment">/* 我的第一个 C 程序 */</span></span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"Hello, World! \n"</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="Python-Quick-Start-Test"><a href="#Python-Quick-Start-Test" class="headerlink" title="Python Quick Start Test"></a>Python Quick Start Test</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(<span class="string">"Hello, World!"</span>)</span><br></pre></td></tr></table></figure>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><script></span><br><span class="line">alert(<span class="string">"我的第一个 JavaScript"</span>);</span><br><span class="line"></script></span><br></pre></td></tr></table></figure>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<script>
window.addEventListener('tabs:register', () => {
let { activeClass } = CONFIG.comments;
if (CONFIG.comments.storage) {
activeClass = localStorage.getItem('comments_active') || activeClass;
}
if (activeClass) {
let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
if (activeTab) {
activeTab.click();
}
}
});
if (CONFIG.comments.storage) {
window.addEventListener('tabs:click', event => {
if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
let commentClass = event.target.classList[1];
localStorage.setItem('comments_active', commentClass);
});
}
</script>
</div>
<div class="toggle sidebar-toggle">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
<aside class="sidebar">
<div class="sidebar-inner">
<ul class="sidebar-nav motion-element">
<li class="sidebar-nav-toc">
文章目录
</li>
<li class="sidebar-nav-overview">
站点概览
</li>
</ul>
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
<p class="site-author-name" itemprop="name">洪浪迪</p>
<div class="site-description" itemprop="description">热爱生活,敢想敢做,对技术多一份热爱</div>
</div>
<div class="site-state-wrap motion-element">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">3</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<a href="/categories/">
<span class="site-state-item-count">2</span>
<span class="site-state-item-name">分类</span></a>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">4</span>
<span class="site-state-item-name">标签</span></a>
</div>
</nav>
</div>
</div>
</div>
</aside>
<div id="sidebar-dimmer"></div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
©
<span itemprop="copyrightYear">2022</span>
<span class="with-love">
<i class="fa fa-heart"></i>
</span>
<span class="author" itemprop="copyrightHolder">洪浪迪</span>
</div>
<div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Gemini</a> 强力驱动
</div>
</div>
</footer>
</div>
<script src="/lib/anime.min.js"></script>
<script src="/lib/velocity/velocity.min.js"></script>
<script src="/lib/velocity/velocity.ui.min.js"></script>
<script src="/js/utils.js"></script>
<script src="/js/motion.js"></script>
<script src="/js/schemes/pisces.js"></script>
<script src="/js/next-boot.js"></script>
</body>
</html>