Are you sure you are seeing any exception which might be thrown? Perhaps your servlet doesn't have permission to write to the file. I would try to debug your program to see what happens when this code is run.
What you are doing will corrupt many of the characters, but you should still get a file.
When I run this code I get a file with
root.label.1130.2=??????
which is what you would expect to get.
If I run this code
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("root.properties", true), "UTF-8"));
String s = "root.label.1130.2=قسيمات";
pw.println(s);
pw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("root.properties"), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
if (ch >= ' ' && ch < 127)
System.out.print(ch);
else
System.out.printf("\\u%04x", (int) ch);
}
System.out.println();
}
prints the following, showing that the Arabic characters have not been mangled.
root.label.1130.2=\u0642\u0633\u064a\u0645\u0627\u062a
the file now contains
root.label.1130.2=قسيمات
as expected.