0
파일에 3 쌍의 플로트 (좌표 3 점)를 저장 한 다음 비교하여 비교해야합니다. 나는이 방법을 시도 :내부 저장 장치에서 플로트 쓰기 및 읽기
public Path loadPath()
{
Path path = new Path();
float x, y;
try
{
FileInputStream fis = new FileInputStream(filePath);
DataInputStream dis = new DataInputStream(fis);
for(int i = 0; i < 3; i++)
{
x = dis.readFloat();
y = dis.readFloat();
path.addCircle(x, y, rad, Path.Direction.CW);
}
dis.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return path;
}
public void savePath(Path cPath)
{
PathMeasure pm = new PathMeasure(cPath, false);
float coords[] = {0f, 0f};
try
{
FileOutputStream fos = new FileOutputStream(filePath);
DataOutputStream dos = new DataOutputStream(fos);
do
{
pm.getPosTan(pm.getLength() * 0.5f, coords, null);
dos.writeFloat(coords[0]);
dos.writeFloat(coords[1]);
}
while(pm.nextContour());
dos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
그러나 DataOutputStream
바이너리 형식의 글을 나는 내 파일이 얻을 :
BК CF BК CF BК CF 그래서
DataInputStream
시도 읽고 이건 이상한 걸 가져옵니다. 또한 FileWriter
으로 작성하려고 시도했지만 파일 내용이 정상적으로 보였지만 제대로 읽을 수 없습니다.
나는 floats 속성을 쓰거나 읽는데 무엇이 필요합니까?
SharedPreferences가 충분하지 않습니까? – ozbek
DataOutputStream은 데이터를 스트림 (및 경우에 따라 파일)에 직렬화하는 데 사용됩니다. writeUTF(), writeShort() 또는 writeFloat()가 전달하는 것과 관계없이 바이트 스트림으로 변환됩니다. 1.23, 1.01, 234.9989 등과 같이 사람이 읽을 수있는 파일을 요구하고 있습니까? – britzl
@shoe 쥐, 아니요, SharedPreferences는 앞으로 더 많은 포인트를 사용할 것이기 때문에 접근하지 않습니다. –