Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Đọc dữ liệu từ file trong lập trình C#

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Red face Đọc dữ liệu từ file trong lập trình C#

    Hiện mình đang học tới việc nhập/xuất dữ liệu từ tập tin (dùng lớp StreamReader/StreamWriter trong namespace System.IO), bây giờ mình thử tạo tập tin vidu.txt trong ổ đĩa C với nội dung như sau:

    1 2 3 4 5 6 7 8 9 10

    Đề bài do mình tự nghĩ ra là "hãy gán những giá trị trong vidu.txt (từ 1..10 , không được gán khoảng trắng đâu nhé) vào một mảng do mình tạo ra", cụ thể là mảng này cũng có 10 phần tử, ý mình là như thế này nè:
    mang[0]=1;
    mang[1]=2;
    ...
    mang[9]=10;

    Chỉ đơn giản như vậy thôi, mong những bạn rành C# chỉ cho mình với. Cho mình cám ơn trước nhé!

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    tp HCM
    Bài viết
    26

    C# xem đơn vị cơ bản của file văn bản (.txt) là dòng, nghĩa là mỗi lần nó đọc (hoặc ghi) 1 dòng.
    Đây là đọan code C# dùng để đọc 1 file văn bản vidu.txt (giả sử tập tin này có 2 dòng).

    string dong1, dong2;
    FileInfo f1 = new FileInfo("vidu.txt"); // tập tin vidu.txt nằm cùng thư mục
    //với tập tin .exe, nếu nó nằm chỗ khác thì cần phải ghi rõ đường dẫn ra.
    Visual C# Code:
    1. if (f1.Exists == true)
    2. {
    3.       StreamReader sr = File.OpenText("NhoID.txt");
    4.       string input = null;
    5.       int i =1;
    6.       while ((input = sr.ReadLine()) != null)
    7.       {
    8.             switch (i)
    9.             {
    10.                   case 1:
    11.                         dong1 = input;
    12.                         i++;
    13.                         break;
    14.                   case 2:
    15.                         dong2 = input;
    16.                         i++;
    17.                         break;
    18.                 }
    19.       }
    20.       sr.Close();
    21. }

    Như vậy với đề bài của bạn thì sau khi thực hiện đoạn code trên biến dong1 sẽ có trị là "1 2 3 4 5 6 7 8 9 10", bây giờ ta xem dong1 là một biến kiểu string gồm nhiều từ cách nhau bởi khoảng trắng, công việc tiếp theo là viết một đoạn code để trích từng từ một gán vào mảng đã khai báo.
    Bạn làm công việc tiếp theo đi nhá, có gì cần trao đổi nữa bạn cứ post lên.
    Đã được chỉnh sửa lần cuối bởi minhtruc : 05-03-2007 lúc 09:09 AM.

  3. #3
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Cám ơn bạn minhtruc nhé. Mình đã hiểu cách nhập/xuất cho file rồi. Mình có thắc mắc với ví dụ giải nghĩa trên của bạn:
    như ở trên, với việc bạn biết trước tập tin có 2 dòng nên bạn đã khai báo 2 biến kiểu string dong1 và dong2. Lỡ tập tin đó có n dòng thì bạn sẽ phải khai báo 1 mảng kiểu string từ dong[0]..dong[n-1], vậy làm sao để biết được số dòng của tập tin nhỉ? À, bạn có thể cho mình biết, mình nên sử dụng tập tin nhị phân hay tập tin văn bản cho các ứng dụng?

  4. #4
    Ngày gia nhập
    08 2006
    Nơi ở
    tp HCM
    Bài viết
    26

    Cho tới bây giờ thì tôi chưa biết có cách nào để lấy được số dòng của tập tin văn bản. Có điều tôi luôn biết được số dòng trong của tập tin .txt của mình (vì tôi tạo ra nó mà, và tôi sử dụng tập tin .txt là có mục đích riêng thường thì nó chỉ gồm vài ba dòng thôi).
    Lệnh ReadLine() dùng để đọc vào từng hàng của tập tin văn bản cho đến cuối tập tin (EOF), khi đến cuối tập tin thì StreamReader sẽ trả về trị null (dòng lệnh while đã test rồi đó).
    Tập tin văn bản xử lý từng dòng, còn tập tin nhị phân thì xử lý từng byte. Nếu không biết chắc tập tin có phải là văn bản hay không thì bạn nên xem nó là tập tin nhị phân cho chắc ăn, có nghĩa tập tin nào cũng có thể xử lý theo kiểu nhị phân được hết, còn muốn xử lý nó theo kiểu tập tin văn bản thì nó phải là tập tin văn bản mới được. Tùy theo mục đích mà bạn xử lý tập tin theo cách nào trong ứng dụng của mình.

  5. #5
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi minhtruc Xem bài viết
    Cho tới bây giờ thì tôi chưa biết có cách nào để lấy được số dòng của tập tin văn bản. Có điều tôi luôn biết được số dòng trong của tập tin .txt của mình (vì tôi tạo ra nó mà, và tôi sử dụng tập tin .txt là có mục đích riêng thường thì nó chỉ gồm vài ba dòng thôi).
    Lệnh ReadLine() dùng để đọc vào từng hàng của tập tin văn bản cho đến cuối tập tin (EOF), khi đến cuối tập tin thì StreamReader sẽ trả về trị null (dòng lệnh while đã test rồi đó).
    Mình có ý tưởng có thể đếm số dòng của một tập tin nè, sao mình không dùng 1 biến dem nào đó, đặt biến dem này trong vòng lặp while((input==sr.ReadLine())!=null), mỗi lần lặp là dem++. Kết quả cuối cùng của biến dem là số dòng của file. minhtruc thấy ý tưởng này thế nào, có hơi "nông dân" không vậy?

  6. #6
    Ngày gia nhập
    08 2006
    Nơi ở
    tp HCM
    Bài viết
    26

    Mặc định Đọc dữ liệu từ file trong lập trình C#

    dùng biến dem như vậy đúng chớ, có điều phải đọc hết tập tin .txt thì mới biết được số dòng, lúc đó trị mình đếm được không có giá trị sử dụng nữa, phải làm sao biết được số dòng trước khi đọc tập tin kìa.

Các đề tài tương tự

  1. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  2. Giới thiệu cách chuyển File Ảnh thành file Video trong download proshow gold
    Gửi bởi thuhu0900x trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 3
    Bài viết cuối: 03-07-2012, 03:54 AM
  3. Đọc dữ liệu file midi dạng số HEX và lấy lời nhạc trong file ra file text
    Gửi bởi kimngockhtn_2007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 29-06-2011, 04:40 PM
  4. File server để dùng ajax trong visual2010 là file gì, xử lý kết nối với SQLserver như thế nào?
    Gửi bởi lenamshenlong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 26-05-2011, 05:14 PM
  5. Làm sao để open file bằng cách double click vào file trong windows explorer?
    Gửi bởi Batchuoc_09 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 18-07-2010, 01:12 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn