i want results saved in a file and using recursive method which rewrite the object and nothing save. if i try to declare the printwriter globaly then it give me the error "Default constructor cannot handle exception type UnsupportedEncodingException thrown by implicit super constructor. Must define an explicit constructor" here is the code
public void lengthFind() {
try {
writer = new PrintWriter("Results.txt", "UTF-8");
fileStreamTest obj = new fileStreamTest();
Scanner s = new Scanner(new File(path));
int max = 0;
while (s.hasNextFloat()) {
int d = (int) s.nextFloat();
// it filters the time stamp
if (d <= 5000) {
String code = obj.GolombCoding(d, dival);
// finding Max length
if (code.length() > max) {
max = code.length();
}
}
}
// Dividend Limit check or increase the Dividend
if (dival == 10) {
writer.println("Divident has reached it Limit !");
i++;
// update the file name
path = "D:/File Compression/Data/low_freq/low_freq/house_1/channel_"
+ i + ".dat";
dival = 10;
} else {
dival = dival + 10;
writer.print("Dividen:" + dival);
}
writer.print("Max Length of File " + i + ": " + max);
writer.println("Path Of the File : " + path);
int counter = 1;
// recall the method
writer.println("Method Call Counter" + counter);
lengthFind();
} catch (IOException e) {
writer.close();
System.out.println("There is no more File");
System.exit(0);
}
Look at the javadoc
Throws:
FileNotFoundException - If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file
SecurityException - If a security manager is present and checkWrite(file.getPath()) denies write access to the file
UnsupportedEncodingException - If the named charset is not supported
You need to deal with the Exception
which the constructor might throw . If you want to declare the PrintWriter
as static
then you need to use static initializer block.
static PrintWriter pw ;
static {
try{
pw = new PrintWriter("Results.txt", "UTF-8");
}
catch(IOException e){
e.printStackTrace();
throw new RuntimeException(e);
}
}