PDA

View Full Version : فایل ها در J2ME



ruhollah_mb
سه شنبه 07 شهریور 1385, 18:53 عصر
من یک برنامه در محیط J2ME نوشتم که یک فایل را از یک مسیر خاص می خواند . این کار را با استفاده از کلاسهای InputStream,DataInputStream انجام دادم . با استفاده از متد getResourceAsStream که نام و مسیر فایل را می گیرد و یک InputStream برمی گرداند توانستم فایل مورد نظر را باز کنم . حال می خواهم توی همین فایل داده هایی بنویسم . می دانم باید از OutputStream استفاده کرد اما نمی دانم چگونه آن را به فایل مورد نظر ربط دهم . یعنی چگونه مسر و نام فایل را بدهم تا آن را برای نوشتن باز کند .
کلاس های FileOutputStream و بعضی دیگر از کلاسها در محیط netbeans که با آن کار میکنم شناخته نشده اند .
خواهشمندم مرا راهنمایی کنید .

rezaTavak
سه شنبه 01 آبان 1386, 07:49 صبح
سلام

توی J2me فایل مانند PC معنی ندارد باید از JSR 75 استفاده کنید تمام کارهایی که می خواهید را دارد.


البته دقت کنید روی موبایل جاوا دائما از کاربرش تایید می خواهد..

zehs_sha
یک شنبه 06 آبان 1386, 10:37 صبح
http://ehsanlinux.persiangig.com/jme/j2me_pda_fc-1_0-fr-spec.zip
http://ehsanlinux.persiangig.com/jme/j2me_pda_pim-1_0-fr-spec.zip

handinux
یک شنبه 06 آبان 1386, 20:33 عصر
سلام
همونطور که دوستمون گفتن برای دسترسی به سیستم فایل باید از JSR75 که PIM نام دارد استفاده نمایید.البته اشکالی که در استفاده از این API وجود دارد این است که همه گوشی ها آن را ساپورت نمی کنند و البته اشکال دیگر آن اگر آن را اشکال بنامیم این است که در صورتی که در برنامه سعی در استفاده از این API نمایید و مثلا بخواهید یک فایل بنویسید یا بخوانید ابتدا باید کاربر(اجرا کننده برنامه) این اجازه را به MIDlet بدهد و این عمل با یک پیام با کاربر اطلاع داده می شود و از او تایید گرفته می شود که این روش سان برای برقراری امنیت است.نمونه کد زیر بر روی یک فایل می نویسد.البته باید به یاد داشته باشید آنرا در try و catch قرار دهید :
Writing to a file:
FileConnection sc = (FileConnection)Connector.open("file:///c/mobile/picture/tmp.txt");
OutputStream os = sc.openOutputStream();
os.write(("text to go into the file").getBytes());
os.flush();
os.close();

haghi.mahdi
شنبه 23 شهریور 1387, 11:01 صبح
سلام نمونه کد زیر بر روی یک فایل می نویسد.البته باید به یاد داشته باشید آنرا در try و catch قرار دهید :
Writing to a file:
FileConnection sc = (FileConnection)Connector.open("file:///c/mobile/picture/tmp.txt");
OutputStream os = sc.openOutputStream();
os.write(("text to go into the file").getBytes());
os.flush();
os.close();
سلام
من از این کد استفاده کردم اما یک سوال مفهومی داشتم
اونم اینه که ادرسی که شما نوشتین ادرس تصویر تو کامپیوتر شماست؟اگه بخواهیم تصویر رو از folder pictureدر موبایل برداریم چه ادرسی رو باید ینویسیم؟چهگونگی این کار برام سوال چون ممکنه تصویر تو هر گوشی یک جای متفاوت ذخیره بشه اونوقت چی ؟

Mah
شنبه 05 اردیبهشت 1388, 22:03 عصر
سلام .
من با کد زیر می خواهم فایل را ایجاد و در آن بنویسم . اما در شبیه ساز همین که به تاییده کاربر می رسم . دیگر شبیه ساز جلو نمی رود . !!!!
در گوشی هم برنامه درست اجرا نمیشود !! گوشی من نوکیا 5320 است .


FileConnection connection = (FileConnection) Connector.open("file:////c:/MyDir/myfile.txt;append=true", Connector.WRITE);
if(!connection.exists())
connection.create();
OutputStream out = connection.openOutputStream();
PrintStream output = new PrintStream( out );
output.println( stTemp );
out.flush();
out.close();
connection.close();

لطفاً یک راهنمایی کامل برای نوشتن در فایلها بفرمائید .....
منتظرم .

Mah
یک شنبه 06 اردیبهشت 1388, 09:30 صبح
سلام .
من کد برنامه ام را این طوری تغییر دادم . اما باز هم نشد .



public boolean writeFile(String path, byte[] data)
{
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {
c = javax.microedition.io.Connector.open("file:///" + path, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
if (!fc.exists())
fc.create();
else
fc.truncate(0);
os = fc.openOutputStream();
os.write(data);
os.flush();
return true;
} catch (Exception e) {
return false;
} finally {
try {
if (os != null)
os.close();
if (c != null)
c.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}


لطفاً راهنمایی کنید منتظرم .

haghi.mahdi
پنج شنبه 10 اردیبهشت 1388, 10:32 صبح
سلام
معمولا این اتفاق میافته البته تو بعضی دوره های آموزشی یاد میده که فایل مرد نظر رو کجای کامپیوتر بذاریم تا emulator از اون استفاده کنه.من هم این مشکل رو داشتم البته در کامپیوتر مشکل حل نشد اما در گوشی موبایل اگر آدرس درست در دستور open تایپ بشه به راحتی کار میکنه پیشنهاد من اینه که دوست عزیز بهتره برای تست از خود گوشی هایی که این api رو support می کنن استفاده کنی.
امیدوارم به جوابت رسیده باشی.

Mah
جمعه 11 اردیبهشت 1388, 12:04 عصر
سلام .
من در نوکیا مسیر درایو را از \:C به \:E تغییر دادم و مشکل حل شد .

RoyA Ammm
یک شنبه 04 مرداد 1388, 16:11 عصر
سلام
من دقیقا همین مشکل رو دارم
JSR چیه؟
میشه راهنمایی کنید؟
من مبتدیم و چیز زیادی نمی دونم راجع به این مبحث
:ناراحت:

RoyA Ammm
یک شنبه 04 مرداد 1388, 16:13 عصر
وقتی مسیر از روی کامپیوتر میدم برنامه به مرحله ای که اجازه از کاربر میخواد میرسه

اما بعد که فایل jar رو روی گوشیم نصب میکنم کاری انجام نمیده

برنامه ی من به این صورته که باید یک دکمه فشار بدم بعد شروع با کار کنه
اما هیچ اتفاقی نمی یفته:ناراحت:

Mah
چهارشنبه 07 مرداد 1388, 13:28 عصر
سلام .
شما نمونه کد خود را در اینجا قرار دهید تا بررسی کنم .

موفق باشید .

Mah
چهارشنبه 07 مرداد 1388, 13:41 عصر
سلام .
این کدی که برای خواندن از فایل می خواستید .

public String readUnicodeFile(String src,String encoding)
{
StringBuffer buffer=new StringBuffer();

java.io.InputStream is = null;
java.io.InputStreamReader isr = null;
try {
int ch=0;
Class c=this.getClass();
is = c.getResourceAsStream(src);
isr = new InputStreamReader(is,encoding);


while((ch=isr.read())>-1)
buffer.append((char) ch);
isr.close();
if (is != null)
{

is.close();
}


}
catch (Exception ex)
{
ex.printStackTrace();
}
return buffer.toString();

}به صورت یک Stream کل فایل خوانده می شود .

موفق باشید .

Mah
چهارشنبه 07 مرداد 1388, 13:50 عصر
این کد هم برای نوشتن در فایل .
البته سعی کن هر وقت نیاز بود Connection را باز کنی. چون از کاربر تاییدیه می خواهد .


public boolean writeFile(String path, String data)
{
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {
String src="file:///E:/YourDIR" ;
c = javax.microedition.io.Connector.open(src, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
if(!fc.isDirectory())
{
fc.mkdir();
}
fc.close();
c.close();
c = Connector.open(src+"/YourFile.txt", Connector.READ_WRITE);
fc = (FileConnection) c;


if(!fc.exists())
fc.create();
else
fc.truncate(0);

os = fc.openOutputStream();
OutputStreamWriter outWr=new OutputStreamWriter(os,"UTF-8");
outWr.write(data);
outWr.flush();
outWr.close();
return true;
} catch (Exception e) {
String st1=e.getMessage();
return false;
} finally {
try {
if (os != null)
{

os.close();
}
if (c != null)
c.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

RoyA Ammm
چهارشنبه 07 مرداد 1388, 14:25 عصر
سلام .
این کدی که برای خواندن از فایل می خواستید .

public String readUnicodeFile(String src,String encoding)
{
StringBuffer buffer=new StringBuffer();

java.io.InputStream is = null;
try {
int ch=0;
Class c=this.getClass();
midlet.is = c.getResourceAsStream(src);
midlet.isr = new InputStreamReader(midlet.is,encoding);


while((ch=isr.read())>-1)
buffer.append((char) ch);
isr.close();
if (is != null)
{

is.close();
}


}
catch (Exception ex)
{
ex.printStackTrace();
}
return buffer.toString();

}به صورت یک Stream کل فایل خوانده می شود .

موفق باشید .



با تشکر از زحمات قبلی شما
من این کد رو کپی کردم
بعد در قسمت
midlet.is = c.getResourceAsStream(src);
midlet.isr = new InputStreamReader(midlet.is,encoding);


while((ch=isr.read())>-1)
buffer.append((char) ch);
isr.close();

midlet ,isr,is رو نمیشناسه

باید چه کارشون کنم؟

Mah
پنج شنبه 08 مرداد 1388, 07:20 صبح
سلام .
کد را تغییر دادم .
دوباره تست نمائید .
این بار کار می کنه .

موفق باشید .

RoyA Ammm
چهارشنبه 14 مرداد 1388, 21:47 عصر
سلام

من کد رو تست کردم
به این صورت
java.io.InputStream isr = null;
java.io.InputStreamReader in = null;
try {

Class c = this.getClass();
isr = c.getResourceAsStream("E://MsgToSend.txt");
in = new InputStreamReader(isr);

Msg2 = (char)in.read();
in.close();
Alert a=new Alert("Error","The amount of msg2 is : "+Msg2, null, AlertType.INFO);
a.setTimeout(Alert.FOREVER);
Display.getDisplay(this).setCurrent(a);


ولی وقتی روی گوشی نصبش میکنم هیچ اتفاقی نمیفته

اونجایی که مسیر فایل رو که میخوام باز کنه رو میدم باید چی بنویسم؟؟
اصلا فایل رو باید کجا ذخیره کنم که برنامه که نصب میشه روی گوشی بهش دسترسی داشته باشه؟

گوشی من به سیستم کامپیوتر میتونه وصل باشه و برنامه رو اجرا کنه یعنی اگر باید فایل رو روی درایوهای سیستم ذخیره کنم مشکلی نداره



وقتی توی netbeans برنامه رو اجرا میکنم و دکمه ی مورد نظر جهت خوندن فایل رو میزنم در قسمت output اینو میزنه(بیشتر منظورم قسمتی هست که bold کردم )
قبلا که با fileconnection کار میکردم چیزی به نام filehandler رو Null زده بود . من فکر میکنم اشاره گر به فایل مقدارش Null هست و فایل اصلا باز نمیشه!


Starting emulator in execution mode
Running with storage root DefaultColorPhone
java.lang.NullPointerException
at com.sun.cldc.i18n.Helper.getStreamReader(Helper.ja va:97)
at com.sun.cldc.i18n.Helper.getStreamReader(Helper.ja va:73)
at java.io.InputStreamReader.<init>(+9)
at SmsFile.SmsAndFile.commandAction(SmsAndFile.java:1 68)
at javax.microedition.lcdui.Display$DisplayAccessor.c ommandAction(Display.java:1992)
at javax.microedition.lcdui.Display$DisplayManagerImp l.commandAction(Display.java:2822)
at com.sun.midp.lcdui.DefaultEventHandler.commandEven t(DefaultEventHandler.java:303)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEv ent(AutomatedEventHandler.java:670)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEvent Handler.run(DefaultEventHandler.java:658)

PR_Fmans
یک شنبه 18 مرداد 1388, 14:31 عصر
با سلام
من هم کد موقع نوشتن روی فایل مشکل دارم.
از من permission می خواد که رو فایل بنویسه ولی هم yes و no رو می زنم برنامه هیچ کاری انجام نمی ده.
کد Mah هم کپی پیست کردم نتیجه همون شد.
لطفن کمک کنید.

RoyA Ammm
دوشنبه 19 مرداد 1388, 00:13 صبح
با سلام
من هم کد موقع نوشتن روی فایل مشکل دارم.
از من permission می خواد که رو فایل بنویسه ولی هم yes و no رو می زنم برنامه هیچ کاری انجام نمی ده.
کد Mah هم کپی پیست کردم نتیجه همون شد.
لطفن کمک کنید.


سلام
ببخشید میشه لطفا بگید چه مسیری رو میدید؟
مسیر فایلی که میخواید از روش بخونید رو چی میدید؟
مسیر src ؟

و به خواهش دیگه
اگر به جواب رسیدید میشه منو هم راهنمایی کنید؟

PR_Fmans
دوشنبه 19 مرداد 1388, 08:19 صبح
سلام
ببخشید میشه لطفا بگید چه مسیری رو میدید؟
مسیر فایلی که میخواید از روش بخونید رو چی میدید؟
مسیر src ؟

src : file///home
file : /user.txt

( البته توی اوبونتو هستم‌)

haghi.mahdi
دوشنبه 19 مرداد 1388, 13:14 عصر
isr = c.getResourceAsStream("E://MsgToSend.txt");


فکر می کنم مشکل از اینجا باشه شما وقتی از source داده ای می خونی لازم به نوشتن
E://MsgToSend.txt نیست.پیشنهاد من اینه که بنویس" MsgToSend.txt /" دقیقا همین رو بنویس .و فایل رو هم تو پوشه src برنامه کپی کن.حتی تو emulator هم کار می کنه.

موفق باشید.

PR_Fmans
دوشنبه 19 مرداد 1388, 15:25 عصر
isr = c.getResourceAsStream("E://MsgToSend.txt");


فکر می کنم مشکل از اینجا باشه شما وقتی از source داده ای می خونی لازم به نوشتن
E://MsgToSend.txt نیست.پیشنهاد من اینه که بنویس" MsgToSend.txt /" دقیقا همین رو بنویس .و فایل رو هم تو پوشه src برنامه کپی کن.حتی تو emulator هم کار می کنه.

موفق باشید.
من این کار هم کردم ولی بازهم کار نمی کنه !!!

haghi.mahdi
دوشنبه 19 مرداد 1388, 18:24 عصر
من این کار هم کردم ولی بازهم کار نمی کنه !!!


این راه حل برای مشکل roya-amm عزیز کاربرد داره .شما دقیقا مشکلتون چیه؟ چه خطایی میده وقتی برنامه رو run می کنید.
و دقیقا می خواهید چی کار کنید؟

RoyA Ammm
سه شنبه 20 مرداد 1388, 00:45 صبح
سلام
خیلی خیلی ممنونم :خجالت:
اون مشکل حل شد:لبخندساده::خجالت:

فقط یه موضوعی هست
اینکه باید برنامه رو compile کنم که فایل هام در فایل jar بره

اما من برنامم تحت ویندوز با زبان سی شارپ هدایت میشه
وقتی که کاربر یک دکمه توی ویندوز میزنه فایل های متنی (مثلا MstToSend.txt) ایجاد میشند
و من میخوام فایل jar رو که( از قبل) روی گوشی نصب کردم بیاد و این فایل ها رو باز کنه و محتواش رو بخونه

به خاطر همین نمی تونم compile کنم که تازه فایل ها بره توی jar

میخوام یه مسیری بدم که از اونجا بخونه و من فایل ها رو توی سی شارپم توی همون مسیر ذخیره کنم

RoyA Ammm
سه شنبه 20 مرداد 1388, 00:48 صبح
من این کار هم کردم ولی بازهم کار نمی کنه !!!

راستش من قبلا این مشکل رو داشتم

اما اون موقع از fileconnection استفاده میکردم

شما همین کد جدید رو استفاده میکنید و این مشکل رو هنوز داره؟

Mah
سه شنبه 20 مرداد 1388, 08:50 صبح
سلام .
ببینید ما کلا دو نوع مسیر دهی برای فایلها می توانیم در نظر بگیریم .


فایلهایی که پس از نصب JAR در داخل پوشه های پروژه ما جای می گیرند .
فایلهایی که در مسیر جداگانه ای قرار دارند .

برای مورد اول شما می توانید همانند مثال خواندن از فایل به صورت یک Stream بخوانید .
مثال :
شما در داخل پروژه تان در پوشه SRC یک پوشه به نام Files دارید و می خواهید فایل MyText.txt با فرمت utf-8 را بخوانید :


همون تابع بالا .
//---------------- نحوه استفاده تابع ------------//
ُString stText=readUnicodeFile("/Files/MyText.txt","UTF-8");


مثال برای مورد دوم :
حال فرض کنید فایل موجود در این مسیر را خوانید
MemoryCard\Files\MyText.txt


//------------- تابع -------------------//
public String readUnicodeFile(String src,String encoding)
{
StringBuffer buffer=new StringBuffer();
javax.microedition.io.Connection c = null;
java.io.InputStream is = null;
try {

c = javax.microedition.io.Connector.open(src, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
is = fc.openInputStream();
int cmp=encoding.toUpperCase().compareTo("ANSI");
InputStreamReader inRead;
if(cmp!=0)
inRead=new InputStreamReader(is,encoding);
else
inRead=new InputStreamReader(is);
int ch;
while((ch=inRead.read())>-1)
buffer.append((char) ch);
inRead.close();
if (is != null)
{

is.close();
}
if (c != null)
c.close();

}
catch (Exception ex)
{
ex.printStackTrace();
}
return buffer.toString();

}

//--------------- نحوه استفاده ---------------------//
با فرمت utf-8
ُString stText=readUnicodeFile("file:///E:/Files/MyText.txt","UTF-8");
با فرمت ASCII
ُString stText=readUnicodeFile("file:///E:/Files/MyText.txt","ANSI");


ولی برای مورد دوم نیاز به اجازه و تایید کاربر دارید .

نکته قابل توجه رعایت حروف کوچک و بزرک حتی در اسم فایلها و پسوند آنها می باشد .

موفق و پیروز باشید

PR_Fmans
سه شنبه 20 مرداد 1388, 09:23 صبح
این راه حل برای مشکل roya-amm عزیز کاربرد داره .شما دقیقا مشکلتون چیه؟ چه خطایی میده وقتی برنامه رو run می کنید.
و دقیقا می خواهید چی کار کنید؟



try{
FileConnection fc = (FileConnection) Connector.open("file:///home/u.txt",Connector.READ_WRITE);
if(!fc.exists()){
fc.create();
}
OutputStream os = fc.openOutputStream();
os.write("test".getBytes());
}catch(IOException ex){
ex.printStackTrace();
}

+ من همون کدی که اینجا گذاشتید هم امتحان کردم نتیجه همین شد.

PR_Fmans
سه شنبه 20 مرداد 1388, 09:36 صبح
راستی این warning رو نشون میده :
To avoid potential deadlock, operations that may block, such as networking, should be performed in a different thread than the commandAction() handler.
بعدش منم یه کلاس جدید ساختم و داخل run همین کد شما رو کپی کردم و داخل تابع write آغاز thread رو فراخونی کردم و در نهایت توی همینجای برنامم که می خواستم رو فایل بنویسم یک instance از اون کلاس ساختم و write رو صدا زدم . اما بازم نتیجه همون شد‌!!

Mah
سه شنبه 20 مرداد 1388, 10:07 صبح
سلام .
من کد نوشتن در فایل را کمی تغییر دادم .
در ضمن دقت نمائید در این تابع چک می کنم که فایل وجود دارد یا نه .


اگر وجود ندارد آنرا ایجاد می کنم .



و گرنه تمام محتوای آنرا از بین می برم !!!

پس شما می توانید متناسب با پروژه تان آنرا تغییر دهید .
قبلاً هم آنرا تست کردم . روی گوشی های Nokia مشکلی نداره .


public boolean writeFile(String src, String data)
{
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {

c = javax.microedition.io.Connector.open(src, javax.microedition.io.Connector.WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
if(!fc.isDirectory())
{
fc.mkdir();
}
fc.close();
c.close();
c = Connector.open(src+"/YourFile.txt", Connector.WRITE);
fc = (FileConnection) c;


if(!fc.exists())
fc.create();
else
fc.truncate(0);

os = fc.openOutputStream();
OutputStreamWriter outWr=new OutputStreamWriter(os,"UTF-8");
outWr.write(data);
outWr.flush();
outWr.close();
return true;
} catch (Exception e) {
String st1=e.getMessage();
return false;
} finally {
try {
if (os != null)
{

os.close();
}
if (c != null)
c.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

//--------------- نحوه استفاده ----------------------//
String data="Your Data in File .";
writeFile("file:///YourDIR/YourFile.txt", data);


موفق باشید

RoyA Ammm
سه شنبه 20 مرداد 1388, 17:27 عصر
منم کد خوندن از فایل رو در پروژم قرار دادم اما وقتی روی گوشیم نصبش میکنم بعد از اجازه گرفتن دیگه هیچ کار انجام نمیشه

من داخل فایلم english مینویسم
encoding رو حذف کردم چون ایراد می گرفت بهش
کد خوندن از فایل خودمو به جای buffer قرار دادم

همین 2 تغییر رو انجام دادم اما بهم کار نمیده و همون warning رو بهم نشون میده

haghi.mahdi
چهارشنبه 21 مرداد 1388, 01:08 صبح
FileConnection fc = (FileConnection) Connector.open("file:///home/u.txt",Connector.READ_WRITE);
if(!fc.exists





سلام
اینطور بنویس





FileConnection fc = (FileConnection) Connector.open("file:///E:/u.txt",Connector.READ_WRITE);




من HOME رو برداشتم.اگر فایلی که دارین تو پوشه home است .اون رو حتما بنویس .نمیدونم جوابتون رو دادم یا نه.
موفق باشید.

RoyA Ammm
چهارشنبه 21 مرداد 1388, 02:09 صبح
یک دنیا ممنونم

واقعا دستتون درد نکنه
جواب داد :لبخندساده:

PR_Fmans
چهارشنبه 21 مرداد 1388, 17:06 عصر
سلام
اینطور بنویس





FileConnection fc = (FileConnection) Connector.open("file:///E:/u.txt",Connector.READ_WRITE);



من HOME رو برداشتم.اگر فایلی که دارین تو پوشه home است .اون رو حتما بنویس .نمیدونم جوابتون رو دادم یا نه.
موفق باشید.


اجازه نمیده تو روت گوشیم بنویسم





کجاست ؟ برای گوشی های نوکیاست فقط !؟!؟ برنامه من قراره تو همه گوشی ها کار E:

haghi.mahdi
پنج شنبه 22 مرداد 1388, 17:12 عصر
سلام
e و c دو root هستند. c از دید برنامه نویسی برمیگرده به حافظه خود گوشی و e همان حافظه جانبی گوشی است.این api یعنی همین دستوری که شما نوشتی توسط اکثر گوشی ها انجام میشه .ولی بعضی گوشی های مدل قدیمی support نمیکنن.و در واقع شما با نوشتن ااین کدی که من بهتون گفتم یک connection به حافظه جانبی گوشی ایجاد می کنید و از طریق اون به فایلتون دسترسی پیدا می کنید.واضحه که قبلش باید فایل رو تو حافظه یا به اصطلاح خودمون ram گوشی گذاشته باشین.حالا اگر به جای e بنویسید c شما به حافظه خود گوشی دسترسی پیدا می کنید.در این صورت باید فایل رو تو حافظه خود گوشی بذارید .یادتون باشه ادرس رو درست بدید مثلا اگر اسم فایلتون u.txt است و اون رو تو پوشه a در حافظه جانبی گذاشتین بنویسید


file:///e/a/u.txt
ممکن است بیشتر از 2 root داشته باشیم.
موفق باشید

PHCRAFT
یک شنبه 05 مهر 1388, 13:31 عصر
سلام من میخوام به انتهای یک فایل متنی ,متنی را اضافه کنم باید چه کار کنم قطعه کد زیر شناخته شده نیست یعنی باعث می شه یک فایل به نام myfile.txt;append=true
ساخته بشه
در واقع append=true بی معنیه
ممنونم اگه کمکم کنید
FileConnection connection = (FileConnection) Connector.open("file:////c:/MyDir/myfile.txt;append=true", Connector.WRITE);

mahdi68
شنبه 17 بهمن 1388, 12:55 عصر
سلام
من چه طوری میتونم متن داخل یک فایل به صورت سطر به سطر بخونم این مثال هایی که اینجا زدین همشون کل فایل میخونن من میخوام هر سطر در یک آرایه ذخیره کنم لطفا راهنماییم کنید که چهطوری این کارو بکنم
متشکر

parnian~parnian
شنبه 16 مرداد 1389, 15:31 عصر
میتونین همهی فایل رو یک جا بخونین بعد داخل یه رشته ذخیره کنین حالا هر وقت که به "n\" رسیدین داخل آرایه ای که میخواین ذخیره کنین.

n_68e_65
دوشنبه 20 دی 1389, 11:44 صبح
باسلام خدمت همه ي شما.بي مقدمه مي رم سر اصل مطلب.من برنامه نويسي موبايل کار ميکنم با نت بينز.اما براي ادامه ي کار مشکل دارم.من در برنامم مي خوام يک پارامتر رو به يک سرور بفرستم که در سرور مثلا يک فايل phpدارم که اين پارامترفرستاده شده بايد در اون فايل چک بشه اگه درست بود يک جواب براي من بفرستد.خواهش مي کنم که من رو راهنمايي کنيد.من اول راهم دست من رو هم بگيريد تا راه بيفتم.....

dr_jacky_2005
سه شنبه 05 بهمن 1389, 15:52 عصر
سلام

توی J2me فایل مانند PC معنی ندارد باید از JSR 75 استفاده کنید تمام کارهایی که می خواهید را دارد.


البته دقت کنید روی موبایل جاوا دائما از کاربرش تایید می خواهد..

چه کنم که اون سوالات تاییدی رو نپرسه؟

ghuzebalaghuz
جمعه 08 بهمن 1389, 21:30 عصر
ئه مبه بتانوينم كئ ليم تئ ئه گه ات؟:اشتباه:

asif1358
چهارشنبه 18 اسفند 1389, 01:42 صبح
سلام دوستان!
من در سایت fekrenaw.com یک مقاله کامل در مورد کار با فایل ها در J2ME گذاشته ام؛ فکر کنم به درد علاقمندان به این زبان بخوره
آموزش J2ME قسمت چهارم (http://www.fekrenaw.com/TopicDetails.aspx?tid=36)

tecnocomputer2
جمعه 20 اسفند 1389, 22:35 عصر
کار نمیکنن همشون!
حتما باید روی گوشی تست بشن؟
دارم با NetBeans برنامه مینویسم باید چه ادرسی بهش بدم که فایل رو باز کنه یا بخونه؟
برای این آدرس: file:///c:/a.txt باید یه فایل توی درایو c با اسم a.txt بسازم؟
ممنون میشم یکی یه کد درست حسابی بده که کاملا کار کنه...

m121212
دوشنبه 23 خرداد 1390, 13:32 عصر
سلام دوستان این هشدار :

To avoid potential deadlock, operations that may block, such as networking, should be performed in a different thread than the commandAction() handler.
اینو میگه که در هر کلاسی که از Commandlistener یا هر نوع listener دیگه ای استفاده می کنی توابعی که نیاز به تایید کاربر داره رو استفاده نکن ، دلیلش هم بلاک شدن نخ جاری برنامه و به عبارتی هنگ برنامه میشود.
پس باید کلاسی از نوع Thread یا Runnable بسازی و در تابع run اون این توابع رو استفاده کنید بعد از بدست آوردن جواب نهایی اون رو به همون کلاسی که می خوای برگردونی.
یذره سنگین شد ولی امتحان کنید. میبینید دیگه اون warning رو نمی ده و برنامه کار می کنه.
البته برای بدست آوردن تمام روت های سیستم باید از دستور:

Enumeration e = FileSystemRegistry.listRoots();
استفاده کنید.

pcdownload.bloghaa.com
شنبه 08 مرداد 1390, 01:22 صبح
کار نمیکنن همشون!
حتما باید روی گوشی تست بشن؟
دارم با NetBeans برنامه مینویسم باید چه ادرسی بهش بدم که فایل رو باز کنه یا بخونه؟
برای این آدرس: file:///c:/a.txt باید یه فایل توی درایو c با اسم a.txt بسازم؟
ممنون میشم یکی یه کد درست حسابی بده که کاملا کار کنه.

سلام :
برای NetBeans برای خواندن از کد زیر :


private void readFile() {
try {
FileConnection textFile = (FileConnection)Connector.open("file:///root1//hello.txt");
getTextBox().setString("");
InputStream fis = textFile.openInputStream();
byte[] b = new byte[1024];
int length = fis.read(b, 0, 1024);
fis.close();
if (length > 0) {
textBox.setString(new String(b, 0, length));
}
} catch (IOException ex) {
textBox.setString("Error");
}
}

توضیح هم نیاز نداره سادست.فقط آدرس را نگاه کنید که برای تست در امولاتور گذاشتم.
همچین آدرسی روی موبایل وجود نداره و به جاش باید از آدرس هایی شبیه این استفاده کرد:
file:///c:/other/test.txt
پوشه root برای امولاتور هم به راحتی قابل پیدا کردن هست (توی درایو ویندوز و پوشه Document and setting کلمه root1 را جستجو کنید)

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

public boolean writeFile(String data)
{
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {
String src="file:///root1//" ;
c = javax.microedition.io.Connector.open(src, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
if(!fc.isDirectory())
{
fc.mkdir();
}
fc.close();
c.close();
c = Connector.open(src+"new.txt", Connector.READ_WRITE);
fc = (FileConnection) c;


if(!fc.exists())
fc.create();
else
fc.truncate(0);

os = fc.openOutputStream();
OutputStreamWriter outWr=new OutputStreamWriter(os,"UTF-8");
outWr.write(data);
outWr.flush();
outWr.close();
return true;
} catch (Exception e) {
String st1=e.getMessage();
return false;
} finally {
try {
if (os != null)
{

os.close();
}
if (c != null)
c.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
اینجا هم به آدرس فایل دقت کنید.

کار سختی نیست.این کدها کاملا تست شده هستن.
البته من خودم با امروز 3 روزه که برنامه نویسی موبایل یاد گرفتم(در حال یادگیری).اما برنامه های گرافیک بالایی ساختم.

pcdownload.bloghaa.com
شنبه 08 مرداد 1390, 01:30 صبح
کار نمیکنن همشون!
حتما باید روی گوشی تست بشن؟
دارم با NetBeans برنامه مینویسم باید چه ادرسی بهش بدم که فایل رو باز کنه یا بخونه؟
برای این آدرس: file:///c:/a.txt باید یه فایل توی درایو c با اسم a.txt بسازم؟
ممنون میشم یکی یه کد درست حسابی بده که کاملا کار کنه.

سلام :
برای NetBeans برای خواندن از کد زیر :


private void readFile() {
try {
FileConnection textFile = (FileConnection)Connector.open("file:///root1//hello.txt");
getTextBox().setString("");
InputStream fis = textFile.openInputStream();
byte[] b = new byte[1024];
int length = fis.read(b, 0, 1024);
fis.close();
if (length > 0) {
textBox.setString(new String(b, 0, length));
}
} catch (IOException ex) {
textBox.setString("Error");
}
}

توضیح هم نیاز نداره سادست.فقط آدرس را نگاه کنید که برای تست در امولاتور گذاشتم.
همچین آدرسی روی موبایل وجود نداره و به جاش باید از آدرس هایی شبیه این استفاده کرد:
file:///c:/other/test.txt
پوشه root برای امولاتور هم به راحتی قابل پیدا کردن هست (توی درایو ویندوز و پوشه Document and setting کلمه root1 را جستجو کنید)

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

public boolean writeFile(String data)
{
javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
try {
String src="file:///root1//" ;
c = javax.microedition.io.Connector.open(src, javax.microedition.io.Connector.READ_WRITE);
javax.microedition.io.file.FileConnection fc =
(javax.microedition.io.file.FileConnection) c;
if(!fc.isDirectory())
{
fc.mkdir();
}
fc.close();
c.close();
c = Connector.open(src+"new.txt", Connector.READ_WRITE);
fc = (FileConnection) c;


if(!fc.exists())
fc.create();
else
fc.truncate(0);

os = fc.openOutputStream();
OutputStreamWriter outWr=new OutputStreamWriter(os,"UTF-8");
outWr.write(data);
outWr.flush();
outWr.close();
return true;
} catch (Exception e) {
String st1=e.getMessage();
return false;
} finally {
try {
if (os != null)
{

os.close();
}
if (c != null)
c.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
اینجا هم به آدرس فایل دقت کنید.

کار سختی نیست.این کدها کاملا تست شده هستن.
البته من خودم با امروز 3 روزه که برنامه نویسی موبایل یاد گرفتم(در حال یادگیری).اما برنامه های گرافیک بالایی ساختم.

Programmer3
جمعه 14 مرداد 1390, 00:28 صبح
دوستان من تازه می خوام برنامه نویسی موبایل جاوا رو شروع کنم:قلب:
لطفا کمکم کنید و لینک دانلود ملزومات مورد نیاز برای برنامه نویسی رو به ایمیلم بفرستید

pcmail1992@yahoo.com

یه دنیا ممنون

mohamad86
چهارشنبه 16 شهریور 1390, 19:21 عصر
سلام
من من با این زبان یک دیکشنری ساده نوشتم.
اگه میخوای که در شبیه ساز از فایل بخونی باید اونو در ادرس زیر بگزاری:
C:\Users\mohamad\javame-sdk\3.0\work\0\appdb\filesystem\root1
البته بسته به شبیه سازی که استفاده می کنی باید فایلو در یکی از پوشه هایی که بت تعداد 0-12 که داخل work است بزاری