• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Basic4Android] Bài 7 - Lớp thư viện File, Collection (Core)

Lập trình cho Android Phone

Điều hành viên: tummosoft

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 332
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 59 time
Liên hệ:

[Basic4Android] Bài 7 - Lớp thư viện File, Collection (Core)

Gửi bàigửi bởi tummosoft » T.Tư 23/07/2014 7:46 am

Nhiều ứng dụng đòi hỏi truy cập vào các tệp lưu trữ một cách liên tục. Trong đó, có hai loại lưu trữ phổ biến nhất là các tập tin và tệp cơ sở dữ liệu.

Tương tự như VB6, thư viện File (Core) của Basic4Android cũng khá dễ sử dụng.

* File.DirAssets : Trả về địa chỉ đường dẫn thư mục lưu các resources đính kèm trong tập tin apk. Bạn không thể tạo mới fie trong thư mục này, chúng chỉ có thể đọc.

* File.DirInternal / File.DirInternalCache : Trả về địa chỉ đường dẫn, nơi cài đặt ứng dụng. Thư mục cache có thể được xóa bởi hệ điều hành nếu nó cần không gian lưu trữ lớn hơn.

* File.DirRootExternal : Trả về đường dẫn thư mục gốc thẻ nhớ.

* File.DirDefaultExternal : Trả về địa chỉ mặc định khi ứng dụng của bạn được cài đặt trên SD card.
Thông thường đường dẫn sẽ là : <storage card>/Android/data/<package>/files/

* ExternalReadable As Boolean : Kiểm tra xem thẻ nhớ có sắn sàng hay chưa

* ExternalWritable As Boolean : Kiểm tra xem thẻ nhớ có được phép ghi hay không

Các hàm khác xin xem tại đây: http://www.basic4ppc.com/android/wiki/index.php/Files

Hình ảnh


:) Tummo Software :D
http://tummosoft.com

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 332
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 59 time
Liên hệ:

Re: [Basic4Android] Bài 7 - Lớp thư viện File (Core)

Gửi bàigửi bởi tummosoft » T.Tư 23/07/2014 8:07 am

Để đọc ghi tập tin dạng text, Basic4Android có hỗ trợ 2 cách khác nhau. Tuy nhiên, hai hàm TextReader và TextWriter thường hay được sử dụng nhất vì tốc độ đọc nhanh, nhất là với các tập tin dung lượng lớn.

Lưu ý: Để hiện thị tiếng Việt, các file text biên soạn trên Notepad phải được lưu trữ dưới dạng mã UTF-8

* WriteString (Dir As String, FileName As String, Text As String) : Viết một dòng văn bản mới xuống tập tin.

Ex: File.WriteString(File.DirRootExternal, "1.txt", "Some text")

* ReadString (Dir As String, FileName As String) As String : Đọc tập tin và trả về một chuỗi.

Ex:
Dim text As String
text = File.ReadString(File.DirRootExternal, "1.txt")


[color=#BF0000]* WriteList (Dir As String, FileName As String, List As List)[/color]

Ghi danh sách xuống tập tin, mỗi item là một dòng.

Ex: File.WriteList (File.DirInternal, "mylist.txt", List1)

* ReadList (Dir As String, FileName As String) As List : Đọc một tập tin có nhiều dòng và chứa nó vào một danh sách.

Ex:
Dim List1 As List
List1 = File.ReadList(File.DirDefaultExternal, "1.txt")
For i = 0 to List1.Size - 1
Log(List1.Get(i))
Next

[color=#BF0000]* WriteMap (Dir As String, FileName As String, Map As Map) [/color]

Ghi một tập tin bao gồm một cặp biến và giá trị dưới dạng map. (Xem định dạng của file này http://en.wikipedia.org/wiki/.properties)

* ReadMap (Dir As String, FileName As String) As Map : Độc một tin dạng map và trả về biến và giá trị của dòng.

Ex:
Dim m As Map = File.ReadMap(File.DirAssets, "gamelevels.txt")
Log(m)

Code ví dụ cho các hàm trên:

  1. Sub Process_Globals
  2.  
  3. End Sub
  4.  
  5. Sub Globals
  6.  
  7. End Sub
  8.  
  9. Sub Activity_Create(FirstTime As Boolean)
  10.     If File.ExternalWritable = False Then
  11.         Msgbox("Cannot write on storage card.", "")
  12.         Return
  13.     End If
  14.     SaveStringExample
  15.     ReadStringExample
  16.    
  17.     WriteListExample
  18.     ReadListExample
  19.    
  20.     WriteMapExample
  21.     ReadMapExample
  22.    
  23.     WriteTextWriter
  24.     ReadTextReader
  25. End Sub
  26.  
  27. Sub SaveStringExample
  28.     File.WriteString(File.DirRootExternal, "String.txt", _
  29.         "This is some string" & CRLF & "and this is another one.")
  30. End Sub
  31.  
  32. Sub ReadStringExample
  33.     Msgbox(File.ReadString(File.DirRootExternal, "String.txt"), "")
  34. End Sub
  35.  
  36. Sub WriteListExample
  37.     Dim List1 As List
  38.     List1.Initialize
  39.     For i = 1 To 100
  40.         List1.Add(i)
  41.     Next
  42.     File.WriteList(File.DirRootExternal, "List.txt", List1)
  43. End Sub
  44.  
  45. Sub ReadListExample
  46.     Dim List1 As List
  47.     'We are not initializing the list because it just holds the list that returns from File.ReadList
  48.    List1 = File.ReadList(File.DirRootExternal, "List.txt")
  49.     Msgbox("List1.Size = " & List1.Size & CRLF & "The third item is: " & List1.Get(2), "")
  50. End Sub
  51.  
  52. Sub WriteMapExample
  53.     Dim Map1 As Map
  54.     Map1.Initialize
  55.     For i = 1 To 10
  56.         Map1.Put("Key" & i, "Value" & i)
  57.     Next
  58.     File.WriteMap(File.DirRootExternal, "Map.txt", Map1)
  59. End Sub
  60.  
  61. Sub ReadMapExample
  62.     Dim Map1 As Map
  63.     'Again we are not initializing the map.
  64.    Map1 = File.ReadMap(File.DirRootExternal, "Map.txt")
  65.     'Append all entries to a string builder
  66.    Dim sb As StringBuilder
  67.     sb.Initialize
  68.     sb.Append("The map entries are:").Append(CRLF)
  69.     For i = 0 To Map1.Size - 1
  70.         sb.Append("Key = ").Append(Map1.GetKeyAt(i)).Append(", Value = ")
  71.         sb.Append(Map1.GetValueAt(i)).Append(CRLF)
  72.     Next
  73.     Msgbox(sb.ToString,"")
  74. End Sub
  75.  
  76. Sub WriteTextWriter
  77.     Dim TextWriter1 As TextWriter
  78.     TextWriter1.Initialize(File.OpenOutput(File.DirRootExternal, "Text.txt", False))
  79.     For i = 1 To 10
  80.         TextWriter1.WriteLine("Line" & i)
  81.     Next
  82.     TextWriter1.Close
  83. End Sub
  84.  
  85. Sub ReadTextReader
  86.     Dim TextReader1 As TextReader
  87.     TextReader1.Initialize(File.OpenInput(File.DirRootExternal, "Text.txt"))
  88.     Dim line As String
  89.     line = TextReader1.ReadLine    
  90.     Do While line <> Null
  91.         Log(line) 'write the line to LogCat
  92.        line = TextReader1.ReadLine
  93.     Loop
  94.     TextReader1.Close
  95. End Sub


Hình ảnh
:) Tummo Software :D
http://tummosoft.com

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 332
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 59 time
Liên hệ:

Re: [Basic4Android] Bài 7 - Lớp thư viện File (Core)

Gửi bàigửi bởi tummosoft » T.Tư 23/07/2014 8:33 am

Append một dòng vào text file có sẵn

  1. Dim NewLine As String
  2. NewLine="ABC"
  3. Dim Writer As TextWriter
  4. If File.Exists(File.DirDefaultExternal,"File1.txt")=False Then
  5. Writer.Initialize(File.OpenOutput(File.DirDefaultExternal,"File1.txt",True))
  6. Writer.WriteLine(NewLine)
  7. Writer.Close
  8. End If
  9.  
:) Tummo Software :D
http://tummosoft.com

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 332
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 59 time
Liên hệ:

Re: [Basic4Android] Bài 7 - Lớp thư viện File (Core)

Gửi bàigửi bởi tummosoft » T.Tư 23/07/2014 9:04 am

Đối tượng List trong Collection

Tương tự như VB.NET, List được xem như là một mãng động. Một list có thể chứa bất kỳ loại đối tượng nào.

Dim List1 As List
List1.Initialize
List1.AddAll(Array As Int(1, 2, 3, 4, 5))


Truy cập List

For i = 0 To List1.Size - 1
Dim number As Int
number = List1.Get(i)
...
Next


* Các thành phần của List:

- Add (item As Object) : Thêm một đối tượng vào danh sách

- AddAll (List As List) : Thêm các đối tượng từ 1 mãng
Ex: List.AddAll(Array As String("value1", "value2"))

- AddAllAt (Index As Int, List As List) : Thêm tất cả đối tượng từ một List con, bắt đầu từ vị trí thứ index;

- Clear : Xóa danh sách

- Get (Index As Int) As Object : Lấy một đối tượng của index nằm trong phạm vị

- IndexOf (Item As Object) As Int : Tìm kiếm một item và trả về vị trí, trả về -1 nếu không tìm thấy đối tượng;

- Initialize : Bắt đầu khởi tạo 1 list rỗng.

- Initialize2 (Array As List) : Khởi tạo List mới từ một list cũ;

  1. Dim List1 As List
  2. List1.Initialize2(Array As Int(1,2,3,4,5))
  3. Example:
  4. Dim List1 As List
  5. Dim SomeArray(10) As String
  6. 'Fill array...
  7. List1.Initialize2(SomeArray)


- InsertAt (Index As Int, Item As Object) : Chèn 1 phần tử vào trước vị trí index hiện tại

- IsInitialized As Boolean :

- RemoveAt (Index As Int) : Remove môt item tại vị trí index

- Set (Index As Int, Item As Object) : Thay thế một item có vị trí index bằng một item mới

- Size As Int [read only] : Trả về số lượng phần tử của list

- Sort (Ascending As Boolean) : Sắp xếp các phần tử

- SortCaseInsensitive (Ascending As Boolean) : Sắp xếp các danh sách là string hoăc number, bỏ qua các phần tử char;

- SortType (FieldName As String, Ascending As Boolean) : Sắp xếp danh sách theo kiểu tự định nghĩa, Ascending: tăng hoặc giảm dần;

  1. Sub Process_Globals
  2.     Type Person(Name As String, Age As Int)
  3. End Sub
  4.  
  5. Sub Activity_Create(FirstTime As Boolean)
  6.     Dim Persons As List
  7.     Persons.Initialize
  8.     For i = 1 To 50
  9.         Dim p As Person
  10.         p.Name = "Person" & i
  11.         p.Age = Rnd(0, 121)
  12.         Persons.Add(p)
  13.     Next
  14.     Persons.SortType("Age", True) 'Sort the list based on the Age field.
  15.    For i = 0 To Persons.Size - 1
  16.         Dim p As Person
  17.         p = Persons.Get(i)
  18.         Log(p)
  19.     Next
  20. End Sub


- SortTypeCaseInsensitive (FieldName As String, Ascending As Boolean) : Sắp xếp nhưng bỏ qua các trường hợp char.
:) Tummo Software :D
http://tummosoft.com

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 332
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 59 time
Liên hệ:

Re: [Basic4Android] Bài 7 - Lớp thư viện File (Core)

Gửi bàigửi bởi tummosoft » T.Tư 23/07/2014 9:24 am

Làm việc với đối tượng Map trong Collection

Map là một tập hợp chứa các "keys" và giá trị của nó. Trong đó Keys không được trùng. Nếu bạn thêm một keys đã tồn tại trước đó, các keys trước sẽ bị loại bỏ.
Keys phải là kiểu string hoặc num, giá trị là kiểu bất kỳ.

For i = 0 To Map1.Size - 1
Dim Key, Value As String
Key = Map1.GetKeyAt(i)
Value = Map1.GetValueAt(i)
Next


* Các thành phần của Map

- Clear : Xóa tất cả item khỏi Map

- ContainsKey (Key As Object) As Boolean : Kiểm tra xem một keys có tồn tại

If Map.ContainsKey("some key") Then ...

- Get (Key As Object) As Object : Trả về giá trị được thiết lập của một keys

- GetDefault (Key As Object, Default As Object) As Object : Trả về giá trị của một keys, nếu không tìm thấy sẽ trả về giá trị default;

- GetKeyAt (Index As Int) As Object : Trả về thông tin của keys tại vị trí index

For i = 0 to Map.Size - 1
Log("Key: " & Map.GetKeyAt(i))
Log("Value: " & Map.GetValueAt(i))
Next


- GetValueAt (Index As Int) As Object : Trả về thông tin của giá trị của keys tại vị trí index

For i = 0 to Map.Size - 1
Log("Key: " & Map.GetKeyAt(i))
Log("Value: " & Map.GetValueAt(i))
Next


- Initialize : Khởi tạo một Map

Dim Map1 As Map
Map1.Initialize


- IsInitialized As Boolean

- Keys As IterableList : Trả về một giá trị được sử dụng trong một map

For Each k As String In map1.Keys
Log(k)
Next


- Put (Key As Object, Value As Object) As Object : Thêm một keys và giá trị của nó vào map, nếu một keys trùng, giá trị trước đó sẽ bị thay thế;

Map1.Put("Key", "Value")

- Remove (Key As Object) As Object : Xóa một keys

- Size As Int [read only] : Trả về số lượng item có trong map.

- Values As IterableList : Trả về đối tượng có thể được sử dụng trong map

For Each v As Int In map1.Values
Log(v)
Next
:) Tummo Software :D
http://tummosoft.com


Quay về “Android”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách