ورود

View Full Version : رایت کردن آرایه ای از بایت ها در آخر یک فایل



atpf67
سه شنبه 29 اردیبهشت 1394, 16:30 عصر
سلام دوستان

من یک فایل دارم که می خوام طی چند مرحله آرایه ای از بایت ها رو تولید کنم و در ادامه ی اون فایل رایت کنم، ضمن اینکه این فایل ممکنه حجمش خیلی زیاد بشه، ممنون میشم اگر دوستان کمک کنند.

البته من خودم از متد زیر استفاده کردم اما ظاهراً مشکل داره و جواب نمیده:

File file = null;
FileOutputStream outStream = null;
String file_path = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/PhysicsSketchpad";
File dir = new File(file_path);

public void saveFile(final String filename, byte[] bytes) {

if (!dir.exists())
dir.mkdirs();

if (file == null)
file = new File(dir, filename);

try {
if (outStream == null) {
outStream = new FileOutputStream(file);
}
if (bytes == null) {
outStream.close();
outStream = null;
file = null;
return;
} else {
outStream.write(bytes);
}

} catch (Exception e) {
e.printStackTrace();
}

}

JYasProgramer
سه شنبه 29 اردیبهشت 1394, 17:38 عصر
ببین دوست عزیز مثلا من می خوام فایلی از asset رو بخونم

InputStream mInput = mContext.getAssets().open("file");
String outFileName ="";
File f = new File(outFileName);
f.mkdirs();
OutputStream mOutput = new FileOutputStream(f);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0) {
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();

حالا کافیه شما در جایی که asset هست رو آدرس فایل مورد نظرت رو بدی به عنوان ورودی و به جای outFileName آدرس فایل خروجیتو بدی

atpf67
سه شنبه 29 اردیبهشت 1394, 19:55 عصر
ببین دوست عزیز مثلا من می خوام فایلی از asset رو بخونم

InputStream mInput = mContext.getAssets().open("file");
String outFileName ="";
File f = new File(outFileName);
f.mkdirs();
OutputStream mOutput = new FileOutputStream(f);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0) {
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();

حالا کافیه شما در جایی که asset هست رو آدرس فایل مورد نظرت رو بدی به عنوان ورودی و به جای outFileName آدرس فایل خروجیتو بدی

ممنونمم بزرگوار
ولی اینکاری که شما کردید که میاد هر بار فایل رو جای فایل قبلی رایت می کنه نه در ادامه ی اون، من همونطور که توضیح دادم می خوام با هر بار ورود به این متد بایت هام رو در ادامه ی فایل قبلیم رایت کنه و در واقع بچسبونه به فایل قبلیم.

JYasProgramer
چهارشنبه 30 اردیبهشت 1394, 08:35 صبح
آها متوجه شدم
اینم یه مثال

try{
String data = " This content will append to the end of the file";

File file =new File("javaio-appendfile.txt");

//if file doesnt exists, then create it
if(!file.exists()){
file.createNewFile();
}

//true = append file
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
bufferWritter.close();

System.out.println("Done");

}catch(IOException e){
e.printStackTrace();
}


شما به جای javaio-appendfile.txt آدرس دقیق فایل خودت رو بده