PDA

View Full Version : نوشتن در فایل



parnian~parnian
شنبه 16 مرداد 1389, 17:44 عصر
کار خیلی خیلی فوری دارم :عصبانی++::عصبانی++::عصبانی++:
من توی برنامه ام جایی احتیاج دارم به نوشتن در فایل و نمونه کوچکی از برنامه ام رو هم گذاشتم ولی مشکل داره یعنی جایی وایمیسته و دیگه کاری انجام نمیده (اونم توی قسمت تایید) راستش وقتم خیلی کمه اگه خودتون نگاه کنین متوجه میشین


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/



import java.io.OutputStreamWriter;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* @author dell
*/
public class VisualMIDlet extends MIDlet implements CommandListener {

private boolean midletPaused = false;

//<editor-fold defaultstate="collapsed" desc=" Generated Fields ">
private Form form;
private Command exitCommand;
private Command okCommand;
//</editor-fold>

/**
* The VisualMIDlet constructor.
*/
public VisualMIDlet() {
}
public boolean writeFile(String src, String data)
{

javax.microedition.io.Connection c = null;
java.io.OutputStream os = null;
OutputStreamWriter is=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 (is == null)
throw new Exception("File Does Not Exist");
fc.close();
c.close();
c = Connector.open(src+"f.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();
}
}


}

//<editor-fold defaultstate="collapsed" desc=" Generated Methods ">
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Method: initialize ">
/**
* Initilizes the application.
* It is called only once when the MIDlet is started. The method is called before the <code>startMIDlet</code> method.
*/
private void initialize() {
// write pre-initialize user code here

// write post-initialize user code here
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Method: startMIDlet ">
/**
* Performs an action assigned to the Mobile Device - MIDlet Started point.
*/
public void startMIDlet() {
// write pre-action user code here
switchDisplayable(null, getForm());
// write post-action user code here
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Method: resumeMIDlet ">
/**
* Performs an action assigned to the Mobile Device - MIDlet Resumed point.
*/
public void resumeMIDlet() {
// write pre-action user code here

// write post-action user code here
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Method: switchDisplayable ">
/**
* Switches a current displayable in a display. The <code>display</code> instance is taken from <code>getDisplay</code> method. This method is used by all actions in the design for switching displayable.
* @param alert the Alert which is temporarily set to the display; if <code>null</code>, then <code>nextDisplayable</code> is set immediately
* @param nextDisplayable the Displayable to be set
*/
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
// write pre-switch user code here
Display display = getDisplay();
if (alert == null) {
display.setCurrent(nextDisplayable);
} else {
display.setCurrent(alert, nextDisplayable);
}
// write post-switch user code here
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Method: commandAction for Displayables ">
/**
* Called by a system to indicated that a command has been invoked on a particular displayable.
* @param command the Command that was invoked
* @param displayable the Displayable where the command was invoked
*/
public void commandAction(Command command, Displayable displayable) {
// write pre-action user code here
if (displayable == form) {
if (command == exitCommand) {
// write pre-action user code here
exitMIDlet();
// write post-action user code here
} else if (command == okCommand) {
// write pre-action user code here
writeFile("file:///e:/f.txt/", "dataaaaaaaaaaaa");


// write post-action user code here
}
}
// write post-action user code here
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Getter: form ">
/**
* Returns an initiliazed instance of form component.
* @return the initialized component instance
*/
public Form getForm() {
if (form == null) {
// write pre-init user code here
form = new Form("form");
form.addCommand(getExitCommand());
form.addCommand(getOkCommand());
form.setCommandListener(this);
// write post-init user code here
}
return form;
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Getter: exitCommand ">
/**
* Returns an initiliazed instance of exitCommand component.
* @return the initialized component instance
*/
public Command getExitCommand() {
if (exitCommand == null) {
// write pre-init user code here
exitCommand = new Command("Exit", Command.EXIT, 0);
// write post-init user code here
}
return exitCommand;
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc=" Generated Getter: okCommand ">
/**
* Returns an initiliazed instance of okCommand component.
* @return the initialized component instance
*/
public Command getOkCommand() {
if (okCommand == null) {
// write pre-init user code here
okCommand = new Command("Ok", Command.OK, 0);
// write post-init user code here
}
return okCommand;
}
//</editor-fold>

/**
* Returns a display instance.
* @return the display instance.
*/
public Display getDisplay () {
return Display.getDisplay(this);
}

/**
* Exits MIDlet.
*/
public void exitMIDlet() {
switchDisplayable (null, null);
destroyApp(true);
notifyDestroyed();
}

/**
* Called when MIDlet is started.
* Checks whether the MIDlet have been already started and initialize/starts or resumes the MIDlet.
*/
public void startApp() {
if (midletPaused) {
resumeMIDlet ();
} else {
initialize ();
startMIDlet ();
}
midletPaused = false;
}

/**
* Called when MIDlet is paused.
*/
public void pauseApp() {
midletPaused = true;
}

/**
* Called to signal the MIDlet to terminate.
* @param unconditional if true, then the MIDlet has to be unconditionally terminated and all resources has to be released.
*/
public void destroyApp(boolean unconditional) {
}

}

handinux
یک شنبه 17 مرداد 1389, 02:19 صبح
ممکنه فقط توی شبیه ساز هنگ می کنه.امتحان کنید روی دیوایس
اگر نشد باید write کردن را در یک Thread جداگانه انجام بدید

pedram123
یک شنبه 17 مرداد 1389, 02:49 صبح
مشکل با Thread برطرف میشه



------------------
برنامه نویسی موبایل (http://www.ir-ns.com/?id=806)

parnian~parnian
یک شنبه 17 مرداد 1389, 14:15 عصر
من تا الان از Threadاستفاده نکردم و اصلا نمیدونم کجای برنامه و چطوری باید این کارو بکنم اگه راهنمایی کنید ممنون میشم.

parnian~parnian
چهارشنبه 20 مرداد 1389, 10:07 صبح
مشكلي كه من دارم براي يه برنامه ي خيلي ساده هم همين طوريه يعني توي قسمتي كه از كاربر سوال مي پرسه كه فايل رو براي نوشتن باز كنم يا نه گير ميكنه و نميدونم چرا ؟ اصلا داخل فايل نمينويسه من كد mah رو از قسمت كار با فايل ها برداشتم و امتحان كردم ولي باز هم نشد . ميشه راهنماييم كنين كه مشكل از كجا است؟

handinux
چهارشنبه 20 مرداد 1389, 18:39 عصر
روی دستگاه تمتحان کردید یا فقط شبیه ساز؟
توی کد جایی که read/write می کنید از Thread استفاده کردید؟

parnian~parnian
پنج شنبه 21 مرداد 1389, 17:48 عصر
روی دستگاه هم امتحان کردم ولی متاسفانه نشد .
من نمیدونم کجا باید از thread استفاده کنم و اگه میشه توضیح بدین که اصلا این مشکل چطوری ربط به thread پیدا میکنه ؟ و من در کدوم قسمت از thread استفاده کنم؟
و مساله مهم تر این که خیلی از گوشی ها thread رو پشتیبانی نمیکنند و من نیاز دارم که حتما همهی انواع گوشی کل برنامه رو پشتیبانی کنند . من از متد ها و روش های خود جاوا استفاده کردم ولی محیط برنامه نویسی موبایل اون ها رو پشتیبانی نمیکنند اگه کمکم کنین ممنون میشم .