Announcement

Collapse
No announcement yet.

Giúp tối ưu cách chọn đường dẫn để lưu 1 file nguyên tên và định dạng.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Giúp tối ưu cách chọn đường dẫn để lưu 1 file nguyên tên và định dạng.

    Mình có bài tập dạng lưu file dk truyền từ nơi này đến nơi khác nhưng ngặt nỗi nếu chọn tên file sai so với tên file gốc thì nó sẽ ra 1 file cùng dung lượng nhưng ko có định dạng gì cả :sosad:, còn nếu muốn lưu đúng tên file và định dạng thì phải gõ y chóc cái tên file đó vào openfiledialog nhiều khi ko tối ưu lắm. Cụ thể và mình nảy sinh ra 2 ý sau để khắc phục: :happy:

    Cách 1: Làm thế nào để lấy dk cái tên file và định dạng của nó sau dấu \ sau cùng trên đường dẫn của textbox 1 quăng vô chỗ điền tên file của openfiledialog nhỉ ? nếu ko làm dk thì chỉ có nước cứ gõ tên file và định dạng vào như mình nói ban đầu ? Cách này liệu có làm dk và xin các bạn hướng dẫn.:happy:
    Hình mô phỏng;

    Sau khi click vào button Save ta dk hình:


    Cách 2: Mình nghĩ thế này đơn giản hơn là cũng cái button click để mở openfiledialog điền tên file đó thì ta sẽ thay là khi click vào button đó thì nó sẽ lấy tên file sau dấu \ sau cùng của tetxbox1 quăng xuống dấu \ sau cùng của textbox2 thế là ta dk đường dẫn. Tức là giả sử textbox1 đang có đường dẫn là C:\uit.txt trong khi textbox 2 ta đang có sẵn D:\data\ thì sau khi ta click vào button nó se quăng chữ uit.txt vào sau dấu \ cua thang D:\data\ thế là ta đã dk D:\data\uit.txt. Cách này cũng xin các bạn hường dẫn.:happy:
    Hình mô phỏng:
    htc - Hi Tech

  • #2
    Thay code này xem
    PHP Code:
    private void button1_Click(object senderEventArgs e)
            {
                
    saveFileDialog1.InitialDirectory System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                
    saveFileDialog1.Title "Save as...";
                
    saveFileDialog1.FileName "";
                
    saveFileDialog1.Filter "Text Files|*.txt|All Files|*.*";
                
    string save "";
                if (
    saveFileDialog1.ShowDialog() != DialogResult.Cancel) {
                    
    save saveFileDialog1.FileName;
                    
    richTextBox1.SaveFile(saveRichTextBoxStreamType.PlainText);
                }
            } 

    Comment


    • #3
      Để lấy tên file từ textbox1 xuống SaveFileDialog bạn có thể thử cách này xem sao :
      PHP Code:
      saveFileDialog1.FileName textBox1.Text.Split('\\')[textBox1.Text.Split('\\').Length-1]; 
      Get link VIP FShare
      http://linhf.com/fshare
      To the world you may be one person, but to one person you may be the world.

      Comment


      • #4
        Tối ưu code chỉ 4 dòng code này bạn

        string fileName = "uit.txt";
        string sourcePath = @"C:\Users\Public\TestFolder";
        string targetPath = @"C:\Users\Public\TestFolder\SubDir";
        System.IO.File.Copy(System.IO.Path.Combine(sourceP ath, fileName), System.IO.Path.Combine(targetPath, fileName), true);

        Tham số thứ 3 trong .Copy là dùng overwrite nếu tồn tại file nha bạn!!!

        Nói 4 dòng cho zui thôi, bắt lỗi nhiều lắm bạn, source file tồn tại hay ko, folder đích đến tồn tại hay không!
        Last edited by 09520147; 10-12-2012, 23:23.

        Comment


        • #5
          Mình làm dk rồi cách của bạn nào cũng hay, đúng đúng hết, cho mình hỏi thêm cái này hơi gà tí là mình tạo thêm cái button nữa khi click vào thì nó sẽ mở cửa sổ window (tức là openfiledialog) theo đường dẫn D:\data\uit.txt trong cái textbox2, mục đích là để xem thằng uit.txt có trong D:\data\ chưa thì làm sao ? Tóm gọn là mở openfiledialog theo đường dẫn có trước:nosebleed:
          htc - Hi Tech

          Comment


          • #6
            Originally posted by htc View Post
            Mình làm dk rồi cách của bạn nào cũng hay, đúng đúng hết, cho mình hỏi thêm cái này hơi gà tí là mình tạo thêm cái button nữa khi click vào thì nó sẽ mở cửa sổ window (tức là openfiledialog) theo đường dẫn D:\data\uit.txt trong cái textbox2, mục đích là để xem thằng uit.txt có trong D:\data\ chưa thì làm sao ? Tóm gọn là mở openfiledialog theo đường dẫn có trước:nosebleed:
            Bạn dùng thuộc tính InitialDirectory của OpenFileDialog:
            PHP Code:
            openFileDialog1.InitialDirectory = @"D:\data"
            Get link VIP FShare
            http://linhf.com/fshare
            To the world you may be one person, but to one person you may be the world.

            Comment


            • #7
              Cám ơn bạn, mình cũng đã tìm ra cách làm, xin góp vui :happy:
              Code:
              Process.Start(System.IO.Path.GetPathRoot(textBox1.Text));
              htc - Hi Tech

              Comment


              • #8
                Originally posted by 11520210 View Post
                Để lấy tên file từ textbox1 xuống SaveFileDialog bạn có thể thử cách này xem sao :
                PHP Code:
                saveFileDialog1.FileName textBox1.Text.Split('\\')[textBox1.Text.Split('\\').Length-1]; 
                :sosad:ak bữa nay sực nhớ lại ko hiểu tại sao lại là .Length -1 mà ko phải là .Length, bạn giải thích giúp vs.:smile:
                htc - Hi Tech

                Comment


                • #9
                  Originally posted by htc View Post
                  :sosad:ak bữa nay sực nhớ lại ko hiểu tại sao lại là .Length -1 mà ko phải là .Length, bạn giải thích giúp vs.:smile:
                  Phần tử cuối cùng của mảng có độ dài Length thì sẽ truy cập với index là Length - 1
                  Chưa....

                  Comment


                  • #10
                    Originally posted by 08520522 View Post
                    Phần tử cuối cùng của mảng có độ dài Length thì sẽ truy cập với index là Length - 1
                    Vẫn chưa hiểu anh trai ơi giả sử trong textbox đường dẫn nó là thế này đi : D:\user\folder\uit.txt anh giải thích giúp em vs cai vd đó xem. :sexy:
                    htc - Hi Tech

                    Comment


                    • #11
                      Originally posted by htc View Post
                      Vẫn chưa hiểu anh trai ơi giả sử trong textbox đường dẫn nó là thế này đi : D:\user\folder\uit.txt anh giải thích giúp em vs cai vd đó xem. :sexy:
                      Dùng hàm Split('\\') thì tạo thành 1 cái mảng gồm các phần tử: ["D:", "user", "folder", "uit.txt"], mảng ngày có độ dài là 4, muốn lấy tên file thì phải truy cập đến phần tử cuối cùng là phần tử có chỉ số 3, tức là "uit.txt". Vì vậy nên mới là length - 1, vì nếu truy cập phần tử cuối cùng mà dùng số 4 thì sẽ bị lỗi
                      Chưa....

                      Comment


                      • #12
                        Originally posted by htc View Post
                        Mình có bài tập dạng lưu file dk truyền từ nơi này đến nơi khác nhưng ngặt nỗi nếu chọn tên file sai so với tên file gốc thì nó sẽ ra 1 file cùng dung lượng nhưng ko có định dạng gì cả :sosad:, còn nếu muốn lưu đúng tên file và định dạng thì phải gõ y chóc cái tên file đó vào openfiledialog nhiều khi ko tối ưu lắm. Cụ thể và mình nảy sinh ra 2 ý sau để khắc phục: :happy:

                        Cách 1: Làm thế nào để lấy dk cái tên file và định dạng của nó sau dấu \ sau cùng trên đường dẫn của textbox 1 quăng vô chỗ điền tên file của openfiledialog nhỉ ? nếu ko làm dk thì chỉ có nước cứ gõ tên file và định dạng vào như mình nói ban đầu ? Cách này liệu có làm dk và xin các bạn hướng dẫn.:happy:
                        Hình mô phỏng;

                        Sau khi click vào button Save ta dk hình:


                        Cách 2: Mình nghĩ thế này đơn giản hơn là cũng cái button click để mở openfiledialog điền tên file đó thì ta sẽ thay là khi click vào button đó thì nó sẽ lấy tên file sau dấu \ sau cùng của tetxbox1 quăng xuống dấu \ sau cùng của textbox2 thế là ta dk đường dẫn. Tức là giả sử textbox1 đang có đường dẫn là C:\uit.txt trong khi textbox 2 ta đang có sẵn D:\data\ thì sau khi ta click vào button nó se quăng chữ uit.txt vào sau dấu \ cua thang D:\data\ thế là ta đã dk D:\data\uit.txt. Cách này cũng xin các bạn hường dẫn.:happy:
                        Hình mô phỏng:
                        dùng lớp Path để lấy filename, rồi set vào SaveDialog

                        Code:
                        <tên dialog>.FileName = System.IO.Path.GetFileName(<đường dẫn file gốc>);

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X