-
Notifications
You must be signed in to change notification settings - Fork 0
/
Scan.java
130 lines (83 loc) · 2.39 KB
/
Scan.java
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Scan {
//_____Class Variables_____//
private BufferedReader reader;
private List list;
private char[] buffer;
public String filepath;
//_____Class Variables_____//
//Constructor.
public Scan(String filepath) throws FileNotFoundException
{
//Create a new reader.
this.reader = new BufferedReader( new FileReader( new File(filepath) ) );
//Create a new character buffer.
this.buffer = new char[128];
this.filepath = filepath;
}
//=================================Scan Method=================================//
public List scan() throws IOException
{
/*This method is scanning the file and storing the characters and their frequency into a list.
* When its done the list will be returned.*/
//Max size of this list is the size of the alphabet.
this.list = new List(); //Create a new list.
boolean flag = true; //A flag for the while loop.
//Create the list of characters.
while (flag)
{
//Read next buffer.
this.nextBuffer();
//Go through the buffer.
for (char c : this.buffer)
{
//Terminate.
if (c == '\0')
{
flag = false;
break;
}
//Append the character into the list.
//If the character already in the list it will increase the frequency.
this.list.append(c);
}
}
this.reader.close();
return this.list;
}
//=================================Scan Method=================================//
//------------------------------Next Buffer Method------------------------------//
private void nextBuffer()
{
/*This method reads the next 128 characters and stores them into an array.*/
//Read next 128 characters.
for (int i = 0; i < this.buffer.length; i++)
{
//Try to read.
try
{
int code = this.reader.read();
//End of stream.
if (code == -1)
{
this.buffer[i] = '\0';
break;
}
//Append the character into the buffer.
this.buffer[i] = (char) code;
}
//Something went wrong.
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
break;
}
}
}
//------------------------------Next Buffer Method------------------------------//
}