You should avoid buying Sri Lankan Rupees ahead of time. The Sri Lankan Rupee isn't considered a major currency, so you’re unlikely to get a good rate if exchanged outside of Sri Lanka.
Airport currency exchange kiosks and many hotels offer currency exchange services. However, the rates on offer are usually unfavourable, and you may also be charged high fees. You’re better off using a currency exchange service or making an ATM withdrawal.
Unlicensed money changers are a common sight on the streets of major cities. While these often seem to offer much better exchange rates than banks or exchange bureaus, they’re best avoided. Many of them will scam you by using sleight of hand to give you less money than you’re due.
Some currency exchange services say they charge no fees or commissions. This is probably untrue. If a company says it doesn’t charge any fees, it usually makes its profit by building it into an unfavourable exchange rate.