我想将文件长度设置为零。我使用以下代码
try
{
new RandomAccessFile(file,"rw").setLength(0);
}
catch (FileNotFoundException e1)
{
// TODO Auto-generated catch block
Log.i("Exception caught ==> ", e1.toString());
e1.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
Log.i("Exception caught ==> ", e.toString());
e.printStackTrace();
}
问题,如果我在文件中写的任何内容意味着,它在文件中显示了一些特殊字符,如AAAAAAAAAAAA并跟随我的内容。请给我一些建议。
答案 0 :(得分:1)
问题可能出在读取缓冲区中。如果你想要读取一个有10个字节数据的文件并且你创建了一个15的byte []那么你将获得额外的null。更好地创建一个大小与文件长度相同的字节数组。获取字符串后,您可以修剪()数据
我尝试使用以下代码,但没有遇到任何问题。
RandomAccessFile ram = null;
byte[] mydata = null;
try
{
System.out.println("...rrunning my app...");
String str =Environment.getExternalStorageDirectory().getAbsolutePath()+"/myfile.txt";
// File f = new File(str);
ram =new RandomAccessFile(str,"rw");
ram.setLength(0);
ram.write("i am fine".getBytes());
System.out.println("...file length..."+ram.length());
mydata = new byte[(int) ram.length()];
ram.close();
RandomAccessFile ram1 =new RandomAccessFile(str,"rw");
ram1.read(mydata);
System.out.println("...data present in 11file..."+new String(mydata));
}
catch (Exception e1)
{
// TODO Auto-generated catch block
Log.i("Exception caught ==> ", e1.toString());
e1.printStackTrace();
}
答案 1 :(得分:0)
与
try (FileOutputStream fos = new FileOutputStream("xxx")) {
fos.write(new byte[0]);
}
或
try (FileWriter fw = new FileWriter("xxx")) {
fw.write("");
}