อยากทราบ การเปิด file config.txt ,อ่านไฟล์ config.txt , ลบ โฟว์เดอร์/ไฟล์ และก็อปปี้ โฟว์เดอร์/ไฟล์ ตามไฟล์ config.txt ที่อ่านได้ (VB.net/C#.net) Device (Mobile)
ตอนนี้กำลังเริ่มต้นเขียน โปรแกรม(.net) เกี่ยวกับการรันบน mobile
จะมีไฟล์ config.txt ในนั้นมีข้อความ
deleteFolder=\ResidentFlash
sourceFolder=\SDMMC\Card
destFolder=\ResidentFlash
เมื่ออ่านได้ก็ทำการ ลบ และ ก็อปปี้ไฟล์ตามที่อ่านได้
deleteFolder=\ResidentFlash ลบข้อมูลเดิมที่อยู่ในโฟลเดอร์นี่ก่อนก๊อปปี้ข้อมูล
sourceFolder=\SDMMC\Card โฟลเดอร์เก็บข้อมุลที่ต้องการก็อปปี้
destFolder=\ResidentFlash โฟลเดอร์ที่วางข้อมูลที่ก็อปมา
Code (C#)
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
namespace CopyGPS
{
public partial class CopyAppV5 : Form
{
protected string sourceFolder = ""; protected string destFolder = ""; protected string deleteFolder = "";
public CopyAppV5()
{
InitializeComponent();
}
private void Showlist(string message)
{
listBox1.Items.Add(message);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
public void DeleteFolder(string deleteFolder)
{
try
{
if (Directory.Exists(deleteFolder))
Directory.Delete(deleteFolder, true);
Showlist("Delete : " + deleteFolder);
}
catch (Exception ex) {
throw ex;
}
}
private void CopyAppV5_Load(object sender, EventArgs e)
{
string strLine = "";
try
{
strLine = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
StreamReader stRead = new StreamReader(strLine+"\\config.txt");
while (stRead.Peek() >= 0)
{
strLine = stRead.ReadLine();
//MessageBox.Show(strLine);
string[] strArr = strLine.Split('=');
if (strArr[0] == "sourceFolder")
{
sourceFolder = strArr[1];
}
else if (strArr[0] == "destFolder")
{
destFolder = strArr[1];
}
else if (strArr[0] == "deleteFolder")
{
deleteFolder = strArr[1];
}
}
//check validate config
if (sourceFolder.Length == 0 || destFolder.Length == 0 || deleteFolder.Length == 0)
{
MessageBox.Show("Wrong format config.txt file.Please check.");
Application.Exit();
}
}
catch (Exception ex)
{
MessageBox.Show("Not found config.txt file.Please check.");
Application.Exit();
throw ex;
}
label1.Text = "sourceFolder: " + sourceFolder;
label2.Text = "destFolder: " + destFolder;
}
private void cmd_start_Click(object sender, EventArgs e)
{
cmd_start.Enabled = false;
listBox1.Items.Clear();
Cursor.Current = Cursors.WaitCursor;
process();
cmd_start.Enabled = true;
Cursor.Current = Cursors.Default;
MessageBox.Show("Operation is completed.", "Copy file complet");
Application.Exit();
}
public void process ()
{
DeleteFolder(deleteFolder);
copyDirectory(sourceFolder, destFolder);
}
public void copyDirectory(string Src, string Dst)
{
try
{
String[] Files;
if (Dst[Dst.Length - 1] != Path.DirectorySeparatorChar)
Dst += Path.DirectorySeparatorChar;
if (!Directory.Exists(Dst)) Directory.CreateDirectory(Dst);
Files = Directory.GetFileSystemEntries(Src);
foreach (string Element in Files)
{
// Sub directories
if (Directory.Exists(Element))
copyDirectory(Element, Dst + Path.GetFileName(Element));
// Files in directory
else
//Don't Copy Shell.ini file
//if (Path.GetFileName(Element) != "Shell.ini")
//{
File.Copy(Element, Dst + Path.GetFileName(Element), true);
Showlist("Copy to: " + Dst + Path.GetFileName(Element));
//}
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
เมื่อรันแล้วกลับบอกว่า Not found config.txt file.Please check. ไม่พบไฟล์ config.txt ไม่ทราบว่าต้องว่าง ไฟล์ config.txt ไว้ที่ใดค่ะTag : .NET, Device (Mobile), VB.NET, C#, VS 2008 (.NET 3.x)
Date :
2012-08-20 11:13:12
By :
แพน
View :
2505
Reply :
9
รอง debug ดูหรือยังครับ ว่า Path ทีไ่ด้มานั้นตรงกับทีอยู่ของ config.txt จริงหรือเปล่า
ถ้าทำแล้วไป run บน Mobile แนะนำให้ต่อสาย Sync ครับ เวลา run มันจะสามารถ Deploy ไปที่ Device ได้เลย
แต่ที่เครื่องเราต้องลงโปรแกรม Microsoft Active Sync(สำหรับ WinXP) หรือ Windows mobile device center(สำหรับ Win7) ก่อนด้วยนะครับ
Date :
2012-08-20 13:36:51
By :
Nameless
ลอง debug ดูแล้ว มันบอกว่า \program file\CopyGPS_V1\config.txt
แต่ที่เก็บจริง D:\projecC\copyGPS_V1\copyGPS_V1\bin\Debug\config.txt
ลองต่อสาย แล้วลง Windows mobile device center(สำหรับ Win7) แล้วค่ะ แต่รันแล้วมันไม่ไปที่ Device ไม่ทราบว่าต้อง config ตรงไหนบ้างค่ะ
Date :
2012-08-20 14:47:59
By :
แพน
ไม่ทราบว่าที่ทำอยู่ตอนนี้ต่อ run กัีบอุปกรณ์จริงเลยหรือเปล่าครับ หรือว่าแค่ run ใน pc เท่านั้นครับ
ถ้าไม่ได้ต่อ run กับอุปกรณ์จริง ไม่จำเป็นต้องต่อสาย sync ก็ได้ แต่ต้องกำหนด Path ให้ตรงครับ ถึงจะสามารถจัดการกับไฟล์ได้ครับ
Date :
2012-08-20 16:25:01
By :
Nameless
รันใน pc ค่ะ ที่บอกว่า ต้องกำหนด Path ให้ตรงครับ ถึงจะสามารถจัดการกับไฟล์ กำหนดยังไงค่ะ
file เก็บไว้ที่
D:\projecC\copyGPS_V1\copyGPS_V1\bin\Debug\config.txt
coding กำหนด path แบบนี้
strPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
strPath = (strPath + "\config.txt")
รันแล้วก็ Error
ไม่ทราบว่าพอจะแนะนำได้มั้ยค่ะ
Date :
2012-08-20 17:40:07
By :
แพน
รองดูตรงคำสั่ง System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
มัน Return ค่าอะไรมาให้ครับ พอนำมารวมกับ "\config.txt" แล้วได้ Path ที่ถูกต้องหรือไม่?
ถ้าไฟล์ "config.txt" เก็บไว้ที่เดียวกับ .exe ของเราเลย ใช้เป็นคำสั่ง Application.StartupPath ก็ได้ครับ
Date :
2012-08-21 08:39:53
By :
Nameless
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
มัน Return ค่าเป็น \Program Files\copyGPS_V1
พอนำมารวมกับ "\config.txt" แล้วได้ Path \Program Files\copyGPS_V1\config.txt
ซึ่ง path ที่เก็บไฟล์จริง ๆ คือ D:\projecC\copyGPS_V1\copyGPS_V1\bin\Debug
(คงเป็นเพราะสาเหตุนี้ ที่ทำให้หา file config.txt ไม่เจอค่ะ แต่ก็ไม่รู้จะเขียนโค้ดแบบไหนที่จะสามารถมองเห็น path จริง)
ส่วนที่บอกว่าเก็บไว้ที่เดียวกับ .exe ของเราแล้วใช้เป็นคำสั่ง Application.StartupPath นี้ Error แบบนี้ค่ะ 'StartupPath' is not a member of 'System.Windows.Forms.Application' แก้ยังไงค่ะ ต้อง import อะไรเพิ่มหรือป่าว หรือว่าโค้นี้ใช้ได้ เฉพาะ Windows Forms
Date :
2012-08-21 09:36:33
By :
แพน
ผมลืมไปว่า Application.StartupPath ใช้ได้กับ WinForm เท่านั้นครับ ขอโทษทีครับ
ที่จริงวิธีแก้ไขเลยถ้าเอาแบบง่ายๆ ก็กำหนด code Path ไฟล์ไปเลย (D:\projecC\copyGPS_V1\copyGPS_V1\bin\Debug) เท่านี้ก็น่าจะได้ครับ แต่ผมว่ามันไม่ค่อย Dynamic นะครับ ก็เลยไม่อยากแนะนำ
รองใช้วิธีตามที่ พี่วิน แนะนำหรือยังครับ (บความคิดเห็นที่ : 6)
Date :
2012-08-21 10:05:08
By :
Nameless
คำสั่ง System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
น่าจะใช้ได้หาก run จริงบน Device ครับ
Date :
2012-08-21 10:15:51
By :
Nameless
Load balance : Server 03