我想将结果保存在文件中并使用递归方法重写对象而不保存任何内容。 如果我尝试声明printwriter globaly然后它给我错误“默认构造函数无法处理由隐式超级构造函数抛出的异常类型UnsupportedEncodingException。必须定义一个显式构造函数” 这是代码
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);
}
答案 0 :(得分:1)
查看javadoc
<强>抛出:强>
FileNotFoundException - 如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误
SecurityException - 如果存在安全管理器且checkWrite(file.getPath())拒绝对文件的写访问
- 醇>
UnsupportedEncodingException - 如果不支持指定的字符集
您需要处理构造函数可能抛出的Exception
。如果要将PrintWriter
声明为static
,则需要使用静态初始化程序块。
static PrintWriter pw ;
static {
try{
pw = new PrintWriter("Results.txt", "UTF-8");
}
catch(IOException e){
e.printStackTrace();
throw new RuntimeException(e);
}
}